我不明白为什么 position=0
而不是 position=-1
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);
而position=-1
如果
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);
最佳答案
不,这不是错误,但我会说文档可以编写,因为您必须深入挖掘才能获得所需的信息。
经过一番尝试后,很明显规则如下:
start
和end
值是从零开始的索引,所以当您输入 3 时,您是在要求它从一个不存在的字符开始存在。如果您将
start
和end
指定为相同的值,则会搜索整个文本,如documentation 中指定的那样.
具体使用您的示例:
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);
在从零开始的索引中,3
和 3
都大于文本的实际长度,因此您试图从一个不符合实际长度的字符开始存在。但是,因为您对 start
和 end
都使用了 3
,所以您满足上面的第二点,因为 whole 文本将被搜索,这就是为什么您会在位置 0(第一次出现)处获得匹配项。
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);
这里您告诉它从最后一个字符开始
,当您搜索 2 个字符时它无法匹配,所以您得到 -1
结果..
所以你的结果符合预期。
关于C# RichTextBox Find() 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881803/