提取单词文本和处理cellbreak字符的建议

时间:2008-12-18 15:22:54

标签: c# string ms-word vsto

寻求建议(也许是最佳实践)。

我们有一个MS Word文档(Office 2007),我们正在从单元格中提取文本。

我们可以使用以下内容:

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

提取文字;但是我们似乎得到额外的字符尾随,例如\r\a

现在我们可以添加以下内容:

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

但这似乎有点过于懒散,而且几乎浪费时间,很可能会导致问题。

我们也可以有一个方法来接收要清理的字符串:

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

然后我们可以使用它:

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

这似乎更接近处理问题的更好方法。你会做什么?

3 个答案:

答案 0 :(得分:1)

我会将其分解为单独的方法,但使用replace实现,因为它是最简单的解决方案。如果遇到问题(例如文本包含多个\r\a并需要保留),您可以随时更改实现。

所以:

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

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

答案 1 :(得分:0)

我绝对会选择将其分解为单独的方法。它有助于提高代码的可读性,并且在将来需要时可以更容易地进行更改。

答案 2 :(得分:0)

获得它的另一种方法是获得角色和角色的长度。提取那个长度的文本。

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)