2013-05-18 26 views
5

我目前正在研究一個有查找選項的記事本。當你輸入一個單詞時,它會找到並突出顯示它。我得到它的工作,但我已經到達了一堵牆,我似乎無法通過我目前使用的方法來做到這一點。我目前正在將文本框中的所有單詞用''分開,並將單詞的長度加起來,直到找到輸入的搜索詞,以便我可以看到發現的單詞的確切位置,所以我可以突出顯示它。你如何找到一個文字在文本框中的位置?

雖然我現在的問題是,因爲我使用拆分('')來獲取文本框中的每個單詞,每當用戶添加一個新行時,sp​​lit的返回數組將是「wordOnFirstLine \ r \ nwordOnSecondLine 」。所以他們會被算作一個字。 什麼是另一種方式,我可以在文本框中找到一個單詞,看看它的位置,以便我可以突出顯示它?

回答

2

嘗試拆分字符串作爲

string splitstring = stringToSplit.Split(new char[] { ' ', '\n', '\r' }); 

它會給你所有的「\ n」和「\ r」字符之間的空字符串,但該修補程序可能是最接近你在做什麼正在做。

+0

YES!最後!在我終於決定問之前,你不知道我用這個打破了我的頭多久了!這解決了它,謝謝! – CsharpFrustration

0

你不應該用''分割所有單詞。您可以按句子('\ n')分割文本,然後對每個句子使用IndexOf來查找單詞的出現。

2

我相信你正在尋找GetLineFromCharIndex(int)方法。傳入單詞中第一個字符的索引應返回其行號。

0

不要分割任何東西。創建潛在的大量字符串是浪費資源。

只需將的IndexOf(用適當的情況下,比較器)可以給你的第一個字的位置在你的整個文本的文本

所以假如您正在搜索詞「答案」像以前一樣用空格分隔的一個字在記事本的文字後,你寫

int pos = 0; 
string searchText = " answer "; 
pos = myNotePad.Text.IndexOf(searchText, pos, StringComparison.CurrentCulture.IgnoreCase); 

現在選擇的路線

if(pos > 0) 
{ 
    myNotePad.Text.SelectionStart = pos + 1; 
    myNotePad.Text.SelectionLength = searchText.Length - 2; 
} 

如果你保存變量的值pos您還可以輕鬆實現查找下一個功能

相關問題