所以我想使用Text.Replace
函数将彩色文本替换为非彩色文本,但非彩色文本必须是特定单词。
例如
private void timer1_Tick(object sender, EventArgs e)
{
int index = 0;
while(index < richTextBox1.Text.LastIndexOf(textBox1.Text))
{
richTextBox1.Find("if");
richTextBox1.Text.Replace("if", Text.Color.DarkGreen "if");
}
}
}
答案 0 :(得分:0)
着色并不是那么难,而是定义术语“单词”。不是那么简单..
这是两个例子:
我认为您可以使用word boundaries的正则表达式定义。根据您的需要,您可能需要改进wordPattern
,即根据您的语法! (有关示例,请参阅here。)
int ColorWord(RichTextBox rtb, string word, Color foreColor, Color backColor)
{
string wordPattern = @"\b" + word + @"\b";
var matches = Regex.Matches(rtb.Text, wordPattern);
for (int i = matches.Count - 1; i >= 0; i--)
{
var m = matches[i];
rtb.SelectionStart = m.Index;
rtb.SelectionLength = m.Length;
rtb.SelectionColor = foreColor;
rtb.SelectionBackColor = backColor;
}
return matches.Count;
}
此函数将为RichTextBox中给定单词的每次出现设置前向和后向着色。它只是为了好的措施而从后面横切比赛,因为我们并没有真正修改任何文字,所以这些字母不会移动;所以我们也可以从头到尾循环;但也许你想有一天改变它来改变它......
了解RTB文本的着色(或以任何其他方式格式化)后,即首先选择部分文字,然后更改{{ 1}}属性,它应该很容易修改..
请注意,单词边界适用于普通文本。您可以自定义新规则以包含或排除要突出显示的语言的字符。