我使用正则表达式来搜索由以下属性返回的纯文本:
namespace Microsoft.Office.Interop.Word
{
public class Range
{
...
public string Text { get; set; }
...
}
}根据匹配结果,我希望对与纯文本相对应的格式化文本进行更改。我遇到的问题是.Text属性中的字符索引与Range对象的.Start和.End属性不匹配。有没有人知道如何匹配这些索引?
(我不能使用通配符查找功能(作为.NET正则表达式的替代),因为它们对于我正在搜索的模式(非贪婪运算符等)来说还不够强大)
我可以通过从Document.Range().Collapse(WdCollapseStart)开始,然后是range.MoveStart(WdUnitChar, match.Index)来移动正确的字符数,因为按字符移动会将格式化文本的位置与纯文本中的匹配位置向上匹配。
我现在的问题是,我总是在格式化的text...so中超过4个字符,也许这与其他故事范围有关?我不确定..。
发布于 2010-09-30 00:10:54
显然,我的匹配仍然失败的原因与隐藏的“贝尔”字符(char bell = '\a';)有关。通过将这些替换为Application.ActiveDocument.Range().Text中的空字符串,我在此属性上的匹配项现在与通过以下方式实现的范围正确匹配:
Word.Range range = activeDocument.Range();
range.Collapse(Word.WdCollapseStart);
range.MoveStart(Word.WdUnits.Character, regexMatch.Index);基本上,您可以通过逐个字符遍历格式化文本来镜像.Text属性中的索引。唯一需要注意的是,您需要从.Text属性中删除奇怪的字符,比如钟形字符。
https://stackoverflow.com/questions/3772938
复制相似问题