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