gpt4 book ai didi

c# - String.IndexOf 函数为 TextBox.Select 提供了错误的位置编号

转载 作者:行者123 更新时间:2023-11-30 20:28:23 27 4
gpt4 key购买 nike

我在代码的 indexOf 功能中发现了一个奇怪的行为,我的字符串输入是从文本文件中读取的,当我在代码的第一行搜索一些文本时,indexOf 函数正确地识别了子字符串的位置,但是如果我在第二行中搜索一些文本,它会在完全匹配后返回一个字符,如果我在第三行中搜索某些内容,它会在完全匹配后返回 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;
}

图片: enter image description here

最佳答案

我用 RichTextBox 测试了这个:

richTextBox1.Text = "test\r\ntest\r\ntest\r\n";

当您在该行之后调试和检查 richTextBox1.Text 时,它的值为 "test\ntest\ntest\n"

因此 RichTextBox 似乎从您的字符串中删除了 \r(作为 Windows 文件内容可能包含换行符,如 \r\n)。

作为一种直接解决方法,您应该在 txtOriginalText.Text 上使用 IndexOf 而不是 fileContent

关于c# - String.IndexOf 函数为 TextBox.Select 提供了错误的位置编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47591640/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com