C#RichTextBox Find()错误?

我不明白为什么position = 0而不是position = -1

RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);

位置= -1如果

RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);

解决方法:

不,这不是错误,但是我可以说文档可以编写,因为您必须深入研究以获得所需的信息.

经过一番摸索后,很明显的规则如下:

>起始值和结束值是从零开始的索引,因此当您输入3时,您要求它从不存在的字符开始.
>如果将开始和结束都指定为相同的值,则将按照documentation中的指定内容搜索全文.

具体使用示例:

RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);

在从零开始的索引中,3和3都大于文本的实际长度,因此您尝试从不存在的字符开始.但是,因为您在开始和结束时都使用了3,所以您满足了上面的第二点,因为将搜索整个文本,这就是为什么您在位置0(第一次出现)处得到匹配的原因.

RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);

在这里,您告诉它从最后一个字符开始,并且在搜索2个字符时它不匹配,因此得到-1.

因此,您的结果符合预期.

上一篇:seata demo之springcloud-eureka-feign-mybatis-seata


下一篇:SpringCloud Alibaba Seata处理分布式事务