我在 WPF (4.0) 中使用 RichTextBox,并使用 GetPositionAtOffset() 方法获取 RichTextBox 内容中两个位置之间的文本范围。
1)我从 MyRichTextBox.Document.ContentStart 初始化文本指针“位置”:
TextPointer position = RTBEditor.Document.ContentStart;
2)我从我的 RichTextBox 中得到这样的文本:
var textRun = new TextRange(RTBEditor.Document.ContentStart, RTBEditor.Document.ContentEnd).Text;
3) 使用正则表达式,我在 textRun 中找到我想要的字符串并获取开始的索引和结束的索引(我搜索“/*”和“*/”之间的文本):
Regex regex = new Regex(@"/\*([^\*/])*\*/");
var match = regex.Match(textRun);
TextPointer start = position.GetPositionAtOffset(matchBegin.Index, LogicalDirection.Forward);
TextPointer end = position.GetPositionAtOffset(matchBegin.Index + matchBegin.Length, LogicalDirection.Backward);
但是,当我在文本范围中使用这些指针并对里面的文本进行着色时,在我的 RichTextBox 中着色的不是在我的正则表达式(带有商品索引)中匹配的好文本。
为什么 GetPositionAtOffset() 方法不给出指定索引处的位置?是这种方法的问题还是在其他地方?
感谢您的回复,我的发展停止了。