替换为彩色文本

时间:2016-03-05 17:14:13

标签: c# text replace colors

所以我想使用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");
        }
    }
}

1 个答案:

答案 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}}属性,它应该很容易修改..

请注意,单词边界适用于普通文本。您可以自定义新规则以包含或排除要突出显示的语言的字符。