【发布时间】:2011-11-17 00:34:16
【问题描述】:
我试图突出显示正则表达式中标记的单词、字母或任何内容。 我在 Silverlight 中使用 RichTextBox(注意 Silverlight 没有使用与其他应用程序相同的 .NET Framework,例如它没有 TextRange)
每当文本有 \r\n 或 \n\r 时,指针都会向前移动 4 个位置。但真正糟糕的是当我做高亮时,样式文本增加了 4 个位置。甚至,我认为他的行为比种族更古怪。请在这方面给我一些建议!
感谢 FailDev。
我用来试试这个的文字是:
ffffffffffffffffffff ffffffffffffff ffffffffffffffffffffff
(4行,最后一个f后面有一个运营商回车\换行)
这也不适用于我的代码(有或没有不稳定的行为):
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ffffffffffffff ffffffffffffffffffffff
(4行,在最后一个f之后有一个运营商返回\换行)
这个想法是用蓝色突出显示的,粗体和下划线“a”字符。
我尝试的最后一个代码是这样的:
MatchCollection CarrierReturns = MainGeneral.Build_Regex(@"[\r\n|\n\r]", false);
MatchCollection WordsFound = MainGeneral.Build_Regex("[a]", false);
foreach (Match x in WordsFound) {
int StringCarrierCount = 0;
if (CarrierReturns.Count > 0)
{
foreach (Match CR in CarrierReturns)
{
if (x.Index > CR.Index)
{
textBox1.Text += " CI:" + StringCarrierCount + "- ";
break;
}
StringCarrierCount++;
}
}
if (x.Index < CarrierReturns[0].Index) { StringCarrierCount = 0; }
StringBegin = 2 + x.Index + (4 * StringColorCounter) + (4 * StringCarrierCount);
StringEnd = StringBegin + x.Length;
textBox1.Text += StringBegin + "-" + StringEnd + " ";
StringColorCounter++;
StartPoint = MainData.ContentStart.GetPositionAtOffset(StringBegin, LogicalDirection.Forward);
EndPoint = MainData.ContentStart.GetPositionAtOffset(StringEnd, LogicalDirection.Forward);
MainData.Selection.Select(StartPoint, EndPoint);
MainData.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(Colors.Blue));
MainData.Selection.ApplyPropertyValue(Run.TextDecorationsProperty, TextDecorations.Underline);
MainData.Selection.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
}
提前谢谢,请在评价不好之前问我! :)
【问题讨论】:
-
我们需要输入/正则表达式/输出。您发布的所有其他“噪音”对我们毫无用处。
-
我真的解决了这个问题,将 xaml 应用于提要(以纯文本形式出现)并将所有内容放在一个段落块中。
标签: regex parsing silverlight-4.0 richtextbox