2016-04-19 10 views
0

Ich möchte eine Suchoperation für eine Zeichenfolge durchführen. für beispiel habe ich eine folgende ZeichenfolgeSo passen Sie das komplette Wort an das durch das Leerzeichen getrennte Wort an

Hallo Mein Name ist Babar und ich bin ein .NET-Entwickler

Nun, wenn ich das gesucht werden soll, wenn ein Wort in dieser Zeichenfolge vorhanden ist oder nicht folgenden Code verwenden.

if(str.Contains("am")) 
{ 
return true; 
} 

Es gibt ein Problem bei dieser Methode wird es 2 Wort zurückkehren werden am und Namen abgestimmt. Das Ergebnis ist am ist korrekt, aber ich möchte, dass das Ergebnis ein komplettes Wort durch Leerzeichen getrennt sein sollte. Es sollte nicht Name als Ergebnis zurückgeben. Es sollte dem vollständigen Wort entsprechen, das nicht Teil davon ist. Bitte helfen Sie mir bei diesem Problem

+0

nach Platz spalten, dann nach Namen suchen? –

+0

Kurz darüber nachdenken, können Sie 'str.Contains (" am ")' verwenden. Oder split string to array, ... –

+1

Diese Regex '\ bam \ b' wird dem Wort' am' mit Wortgrenzen entsprechen. –

Antwort

4

Ich denke, die beste Lösung sind Regular Expressions.

Schau mal hier: C#, Regex.Match whole words

Reguläre Ausdrücke sind effizienter und vielseitiger. Natürlich wäre das manchmal eine Kanone für einen Spatz und es ist besser, Contains() oder ähnliches zu verwenden.

1

Sie können diese verwenden:

Regex.IsMatch("Hi My name is Babar and I am a .Net developer", @"\b(am)\b") 

Will return True, wenn die Zeichenfolge ein Spiel hat:

string str = "Hi My name is Babar and I am a.Net developer"; 

     foreach (string s in str.Split(' ').ToArray()) 
     { 
      if (s.Equals("am")) 
      { 
       return true; 
      } 
     } 
1

Sie wahrscheinlich regex mit dem IsMatch Methode verwendet werden soll.

Jede \b zeigt eine Leerstelle an.

+0

Diese Antwort ist korrekt. '\ b' passt jedoch nicht zu" einem Leerzeichen ", es stimmt mit einer Wortgrenze überein, die eine Nullbreite entspricht. –

Verwandte Themen