2008-12-18 8 views
2

Vous cherchez un conseil (peut-être une bonne pratique).Conseils pour l'extraction de texte de mot et la manipulation de caractères de rupture de cellule

Nous avons un document MS Word (Office 2007) que nous extrayons du texte d'une cellule.

Nous pouvons utiliser les éléments suivants:

string text = wordTable.cell(tablerow.index, 1).Range.Text; 

Le texte est extrait; Cependant, nous semblons avoir des caractères supplémentaires, par exemple \r\a.

Maintenant, nous pourrions ajouter ce qui suit:

.... wordTable.cell(tablerow.index, 1).Range.Text.Replace("\r\a,""); 

Mais cela semble un peu trop paresseux, et à peu près une perte de temps qui conduirait très probablement à des problèmes sur la route.

On pourrait aussi avoir une méthode qui reçoit la chaîne à nettoyer:

private string cleanTextWordCellBreak(string wordTextToClean) 
{ 
    // Clean the text here 
    return cleanstring; 
} 

alors nous pourrions l'utiliser:

cleanTextWordCellBreak(wordTable.cell(tablerow.index, 1).Range.Text; 
); 

Cela semble plus proche d'une meilleure façon de traiter la question. Qu'est-ce que tu ferais?

Répondre

1

Je voudrais le décomposer en une méthode séparée mais utiliser l'implémentation de remplacement car c'est la solution la plus simple. Vous pouvez toujours changer la mise en œuvre plus tard si vous avez un problème (comme le texte contient plus d'un \r\a et doit être préservé)

Alors:

private string stripCellText(string text) 
{ 
     return text.Replace("\r\a", ""); 
} 

string text = stripCellText(wordTable.cell(tablerow.index, 1).Range.Text); 
0

Je choisirais certainement de le séparer en une méthode séparée personnellement. cela aide à la lisibilité du code et le rend beaucoup plus facile à changer si nécessaire à l'avenir.

0

Une autre façon de l'obtenir serait obtenir la longueur de caractères & extrayant le texte jusqu'à cette longueur.

 
dim range as Range 
dim text as string 
dim length as Integer 

range = ActiveDocument.Tables(1).Cell(1,1).Range 
text = range.Text 
length = range.Characters.Count 

Debug.Print Mid(text, 1, length - 1)