首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Range.Text与Range.Start和Range.End关联

将Range.Text与Range.Start和Range.End关联
EN

Stack Overflow用户
提问于 2010-09-23 03:34:47
回答 1查看 1.9K关注 0票数 3

我使用正则表达式来搜索由以下属性返回的纯文本:

代码语言:javascript
运行
复制
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个字符,也许这与其他故事范围有关?我不确定..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-30 00:10:54

显然,我的匹配仍然失败的原因与隐藏的“贝尔”字符(char bell = '\a';)有关。通过将这些替换为Application.ActiveDocument.Range().Text中的空字符串,我在此属性上的匹配项现在与通过以下方式实现的范围正确匹配:

代码语言:javascript
运行
复制
Word.Range range = activeDocument.Range();
range.Collapse(Word.WdCollapseStart);
range.MoveStart(Word.WdUnits.Character, regexMatch.Index);

基本上,您可以通过逐个字符遍历格式化文本来镜像.Text属性中的索引。唯一需要注意的是,您需要从.Text属性中删除奇怪的字符,比如钟形字符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3772938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档