【发布时间】:2018-11-30 05:32:51
【问题描述】:
我想为文件的匹配文本着色。 首先,我将文件文本加载到 FileItem.Content 中,然后使用正则表达式获取匹配项,然后将 Content 放入富文本框并使用匹配项设置插入符号定位和着色文本。 以及填充richtextbox的代码
RtbCodes.Document.Blocks.Clear();
RtbCodes.Document.Blocks.Add(new Paragraph(new Run(item.Content)));
foreach (Match m in item.Matches)
{
TextPointer start1 = RtbCodes.Document.ContentStart.GetPositionAtOffset(m.Index, LogicalDirection.Forward);
TextPointer end = RtbCodes.Document.ContentStart.GetPositionAtOffset(m.Index + m.Length, LogicalDirection.Backward);
if (start1 != null && end != null)
{
RtbCodes.Selection.Select(start1, end);
RtbCodes.Selection.ApplyPropertyValue(Run.BackgroundProperty, "red");
}
}
我的问题是插入符号选择根本不正确。见下图。 我的正则表达式是 [\$#]{[.a-zA-Z\d]+} ,所以它会得到 #{blacklist.model1} ,但它不是。
那么,richtextbox 有什么问题?
【问题讨论】:
-
重现问题实际上不需要 html、正则表达式和
FileItem类。但是他们可以把人们吓跑,因为他们觉得重现你所面临的问题是非常具有挑战性的。如果你提供一个简单的例子——RichTextBox、Paragraph、Run,这些都是演示问题所需要的——你可以很快得到答案——通常在几分钟内。 -
感谢您的建议。
标签: regex wpf selection richtextbox