2010-10-11 13 views
30

Ho due stringhe:String confrontare C# - parola intera partita

string1 = "theater is small"; 
string2 = "The small thing in the world"; 

ho bisogno di tempo del controllo l'stringa "la" è presente nelle stringhe o meno.
Posso usare la funzione contiene, ma può fare una corrispondenza parola intera? non dovrebbe corrispondere con "teatro" di string1!

risposta

0

È possibile utilizzare invece un'espressione regolare. In questo modo puoi specificare che vuoi solo lo spazio o il fine riga alla fine.

59

La soluzione più semplice è quello di utilizzare le espressioni regolari e il delimitatore limite di parola \b:

bool result = Regex.IsMatch(text, "\\bthe\\b"); 

o, se si vuole trovare capitalizzazione disadattamenti,

bool result = Regex.IsMatch(text, "\\bthe\\b", RegexOptions.IgnoreCase); 

(using System.Text.RegularExpressons.)

In alternativa, è possibile dividere il testo in singole parole e cercare l'array risultante. Tuttavia, questo non è sempre banale perché non è sufficiente dividere su spazi bianchi; questo ignorerebbe tutta la punteggiatura e produrrebbe risultati errati. Una soluzione è di usare ancora una volta le espressioni regolari, ovvero Regex.Split.

+3

si potrebbe anche voler specificare RegexOptions.IgnoreCase –

+1

I suoi parametri sono indietro! L'input viene prima, quindi il pattern da abbinare. –

+0

sta passando "La piccola cosa nel mondo" anche se il mio requisito è che dovrebbe essere restituito falso. –

12

Utilizzare il metodo Regex.IsMatch utilizzando \bthe\b, \b rappresenta un delimitatore di delimitazione di parola.

// false 
bool string1Matched = Regex.IsMatch(string1, @"\bthe\b", RegexOptions.IgnoreCase); 

// true 
bool string2Matched = Regex.IsMatch(string2, @"\bthe\b", RegexOptions.IgnoreCase); 
5
str.Split().Contains(word); 

o

char[] separators = { '\n', ',', '.', ' ' }; // add your own 
str.Split(separators).Contains(word); 
0

è possibile se si aggiunge lo spazio nella parola che si esamina

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. – aldanux

+0

che funziona spesso ma non se, ad esempio, si cerca la stringa per "il" e la stringa * termina * con "il" come in: "questo non troverà il" – mtijn

+0

@aldanux scusa ma questo * è * una risposta alla domanda, solo non molto buona e anche molto tarda ... – mtijn

Problemi correlati