2012-03-26 35 views
0

我有一個RichTextBox,並且想要突出顯示整個詞,只是給出它的起始索引。如何突出顯示整個詞,給定其起始索引

我已經能夠突出顯示一個單詞,如果起始索引和長度已知,但在這種情況下,我不知道單詞的長度。是否有可能從起始索引突出到首次出現空間?

UPDATE:

這是我到目前爲止已經試過:

resultsRichTextBox.Select(novelOffset - 2, searchString.Length); 

不幸的是「搜索字符串」並不總是被搜索詞的長度,所以我需要一種方法找到從novelOffset - 2到最近的空間的字符數量。

+0

你能分享一些代碼嗎?我相信有人會很快找出如何找到下一個空的空間。 – oleksii 2012-03-26 20:46:15

+0

當然,只是一秒:) – 2012-03-26 20:46:45

回答

5

你可以做這樣的事情:

int length = this.richTextBox1.Text.Skip(startIdx) 
           .TakeWhile(x => char.IsLetterOrDigit(x)) 
           .Count(); 
this.richTextBox1.Select(startIdx, length); 
this.richTextBox1.SelectionBackColor = Color.Yellow; 

很明顯,你可以用x != ' '或任何你喜歡的改變char.IsLetterOrDigit

+0

這解決了我的問題!謝謝 :) – 2012-03-26 21:09:50

3

可以使用String.IndexOf(Char, Int32)

報告在此字符串指定 Unicode字符中第一次出現的從零開始的索引。搜索從指定的 字符位置開始。

它會給你你的單詞的開始和結束索引。你可以突出顯示它!

int endIndex = resultsRichTextBox.Text.IndexOf(' ', novelOffset - 2); 
resultsRichTextBox.Select(novelOffset - 2, (endIndex - (novelOffset - 2))); 

您只需要處理如果在單詞後沒有找到空格就會發生什麼情況。如果發生這種情況,endIndex值將爲-1。我會簡單地將endIndex的值設置爲searchString.Length

+0

出於某種原因,這突出顯示直到文本框的最後,而不是直到第一個空格。 – 2012-03-26 20:53:14

+1

選擇方法將長度作爲第二個參數,而不是結束索引;) – digEmAll 2012-03-26 20:53:27

+0

@digEmAll我剛剛注意到哈哈,我修正了我相信的代碼,試試這個:) – Alexandre 2012-03-26 20:54:31

0
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); 
0

您可以使用Find方法給出您提供單詞的起始索引並查找SPACE。查找會返回下一個空間的索引,實際上是單詞的結尾(找到-1)。

然後,您可以使用選擇呼叫。

相關問題