如何在给定起始索引的情况下突出显示整个单词
本文关键字:情况下 显示 单词 索引 | 更新日期: 2023-09-27 18:29:15
我有一个RichTextBox,我想突出显示一个完整的单词,只给出它的起始索引。
如果起始索引和长度已知,我可以突出显示一个单词,但在这种情况下,我不知道单词的长度。是否可以从起始索引突出显示到空格的第一次出现?
更新:
这就是我迄今为止所尝试的:
resultsRichTextBox.Select(novelOffset - 2, searchString.Length);
不幸的是,"searchstring"并不总是要搜索的单词的长度,所以我需要一种方法来查找从novelOffset - 2
到最近空格的字符数。
您可以这样做:
int length = this.richTextBox1.Text.Skip(startIdx)
.TakeWhile(x => char.IsLetterOrDigit(x))
.Count();
this.richTextBox1.Select(startIdx, length);
this.richTextBox1.SelectionBackColor = Color.Yellow;
显然,您可以将char.IsLetterOrDigit
更改为x != ' '
或您喜欢的任何内容。
您可以使用String.IndexOf(Char, Int32)
:
报告指定的第一次出现的从零开始的索引此字符串中的Unicode字符。搜索从指定的开始字符位置。
它会给你单词的起始和结束索引。然后您可以突出显示它!
int endIndex = resultsRichTextBox.Text.IndexOf(' ', novelOffset - 2);
resultsRichTextBox.Select(novelOffset - 2, (endIndex - (novelOffset - 2)) );
你只需要处理在单词后面找不到空格的情况。如果发生这种情况,endIndex
的值将为-1。我将简单地将endIndex
的值设置为searchString.Length
。
int startIndex;
//fill startIndex with the known value
int endIndex = startIndex;
while(rtb.Text.CharAt(endIndex) != ' ' && endIndex < rtb.Text.Length)
{
endIndex++;
}
rtb.Select(startIndex, endIndex);
如果提供单词的起始索引并查找SPACE,则可以使用Find
方法。Find将返回下一个空格的索引,实际上是单词的末尾(found-1)。
然后,您可以使用选择通话。