2013-05-18 7 views
5

Attualmente sto lavorando a un blocco note che ha un'opzione di ricerca. Quando digiti una parola lo troverà e lo evidenzierà. Ho funzionato, ma ho raggiunto un muro che non riesco a passare con il metodo che sto usando per farlo. Attualmente sto dividendo tutte le parole nella casella di testo con "" e sommando la lunghezza delle parole fino a trovare il termine di ricerca immesso in modo da poter vedere dove si trova esattamente la parola trovata, quindi posso evidenziarlo.Come si trova a quale riga si trova una parola in una casella di testo?

Il problema che ho ora, è che dato che sto usando split ('') per ottenere ogni parola nella casella di testo, ogni volta che l'utente aggiunge una nuova riga l'array di restituzione della divisione sarà "wordOnFirstLine \ r \ nwordOnSecondLine ". Quindi saranno contati come una sola parola. Qual è un altro modo in cui posso trovare una parola nella casella di testo e vedere dove si trova esattamente così posso evidenziarlo?

risposta

2

Prova scissione la stringa come

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

Vi darà una stringa vuota tra tutti i '\ n' e caratteri '\ r', ma che fix potrebbe essere più vicino a ciò che sei facendo attualmente.

+0

SÌ! FINALMENTE! Non sai per quanto tempo mi sono rotto la testa prima di aver finalmente deciso di chiedere! Questo l'ha risolto, grazie! – CsharpFrustration

0

Non è necessario dividere tutte le parole con "". Puoi dividere il testo per frase ('\ n') e quindi usare IndexOf per ogni frase per trovare l'occorrenza della parola.

2

Credo che stiate cercando il metodo GetLineFromCharIndex(int). Il passaggio dell'indice del primo carattere nella tua parola dovrebbe restituire il suo numero di riga.

0

Non dividere nulla. È uno spreco di risorse creare una serie potenzialmente grande di stringhe.

Semplicemente l'IndexOf (con il caso di confronto appropriato) potrebbe dare la posizione della prima parola in tutta la vostra casella di testo testo

Quindi supponendo che si sta cercando la parola "risposta" come una parola delimitata da uno spazio prima e dopo il blocco note nel testo si scrive

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

ora per selezionare la stringa

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

e se si salva il valore della variabile pos potresti anche implementare facilmente la funzionalità Trova successivo

Problemi correlati