我在我的代码中发现了indexOf功能中的一个奇怪的行为,我的字符串输入是从文本文件中读取的,当我在代码的第一行搜索一些文本时,indexOf函数正确识别子字符串的位置,但是如果我在第二行中搜索一些文本,它会在完全匹配后返回一个字符,如果我在第3行搜索某些内容,它在完全匹配后返回2个字符位置,则每个新行都会以相同的模式进行更改。我不知道为什么会这样,我需要找到一种方法来获得完全相同的文本位置。
我的代码:
string fileContent = File.ReadAllText(filename);
string display_string = "";
txtOriginalText.Text = fileContent;
HighlightText(fileContent.IndexOf("projection"), 5, Color.Aqua);
display_string += fileContent.IndexOf("projection").ToString() + '\n';
HighlightText(fileContent.IndexOf("component"), 5, Color.LightGreen);
display_string += fileContent.IndexOf("component").ToString() + '\n';
HighlightText(fileContent.IndexOf("layer"), 5, Color.Pink);
display_string += fileContent.IndexOf("layer").ToString() + '\n';
txtModifiedText.Text = display_string;
突出显示功能
private void HighlightText(int startIndex, int textLength, Color state)
{
txtOriginalText.Select(startIndex, textLength);
txtOriginalText.SelectionBackColor = state;
}
答案 0 :(得分:4)
我用RichTextBox
测试了这个:
richTextBox1.Text = "test\r\ntest\r\ntest\r\n";
在该行之后调试并检查richTextBox1.Text
时,其值为"test\ntest\ntest\n"
。
因此RichTextBox
似乎从您的字符串中删除了\r
(作为Windows文件内容可能包含新的行字符\r\n
)。
如果您需要立即解决问题,请IndexOf
使用txtOriginalText.Text
代替fileContent
。