如何按颜色在RichTextBox中查找和选择文本

时间:2018-01-31 17:02:52

标签: c# .net richtextbox

我有最简单的文本编辑器和RichTextBox,用户可以在其中更改所选单词的颜色。在那之后,我需要找到彩色单词并根据颜色改变它们。例如,在文本中查找所有红色单词并为其添加其他符号。在C#中最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

一种方法是选择RichTextBox的每个单词,然后获取该单词的颜色。

我认为您可以在子问题中划分问题:

<强> 1。获取文字

您可以使用Text属性访问RichBoxText内容,然后您可以通过按空格,换行和制表符分割来获取单词。当然你可以添加其他分隔符。

<强> 2。选择每个单词并获得颜色

IndexOf类的String方法在这种情况下非常有用。您可以使用richTextBox.Text.IndexOf("word", startIndex)获取RichTextBox中指定单词的位置(指定起始位置)。您可以使用RichTextBox的Select方法选择该单词,然后使用SelectionColor属性获取颜色。

第3。添加角色 如果您知道后者开始和结束的位置,则在指定单词后面添加一个字符很简单。使用SelectedText方法选择工作后,您可以使用Select属性获取所选单词(请参阅第2点)。只需将单词和字符的串联分配给SelectedText属性。

这是一个例子(代码注释的用法):

// Word with specified color to which add a symbol
var searchedColor = Color.Gray;

// Reset selection
richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = 0;

// Symbol to add to the word
const string symbol = "!";

// List of words, maybe you want to use a custom separator
var words = richTextBox1.Text.Split(new char[] { ' ', '\n', '\t' }, StringSplitOptions.RemoveEmptyEntries);

int index = -1;

foreach (var word in words)
{
    index = richTextBox1.Text.IndexOf(word, (index + 1));

    if (index > -1)
    {
        richTextBox1.Select(index, word.Length);

        // If the selected text as the specified color
        if (richTextBox1.SelectionColor == searchedColor)
        {
            //Add the symbol
            richTextBox1.SelectedText = word + symbol;
        }
    }
}