如何移动范围的起始位置,直到到达双引号

问题描述 投票:0回答:1

我想移动Range对象的起始位置,直到它遇到第一个双引号。我使用了这段代码,但是它并没有达到要求:

object cSet = "\"";
Range range = Globals.ThisAddIn.Application.Selection.Range;
range.MoveStartUntil(cSet);

但是,如果我使用其他字符,它将移动以满足该字符。我相信此行为的原因与"的专用功能声明字符串文字有关。是否可以将双引号用作字符集的一部分,以将范围的起始或结束位置移至?

c# vsto ms-office office-addins word-addins
1个回答
0
投票

我已经使用@freeflow在注释中提供的提示找出了解决方案。

单词文档中的引号是智能的卷曲引号,它与字符串中使用的直引号"不同。因此,我必须通过获取文档中的引号并将其转换为int来获得智能卷曲引号的字符代码表示形式:

Range range = Globals.ThisAddIn.Application.Selection.Range int code = (int)range.Text

这分别返回开和关智能报价的8220和8221。

所需的字符集将变为:

object cSet = "\"" + (char)8220 +(char)8221;

如果在智能引号已转换为直线引号的文档中,“添加”在文档中遇到它,则cSet中仍会包含直线引号。

© www.soinside.com 2019 - 2024. All rights reserved.