文字列内の完全一致を検索するにはどうすればよいですか? たとえば、次のテキストを含む文字列があるとします。
ラベル
ラベル:
ラベル
そして、ラベルを検索します。他の 2 つではなく、最初の一致のみを取得したいのです。Contains メソッドと IndexOf メソッドを試しましたが、2 番目と 3 番目の一致も得られました。
文字列内の完全一致を検索するにはどうすればよいですか? たとえば、次のテキストを含む文字列があるとします。
ラベル
ラベル:
ラベル
そして、ラベルを検索します。他の 2 つではなく、最初の一致のみを取得したいのです。Contains メソッドと IndexOf メソッドを試しましたが、2 番目と 3 番目の一致も得られました。
次のような正規表現を使用できます。
bool contains = Regex.IsMatch("Hello1 Hello2", @"(^|\s)Hello(\s|$)"); // yields false
bool contains = Regex.IsMatch("Hello1 Hello", @"(^|\s)Hello(\s|$)"); // yields true
\b は単語境界チェックであり、上記のように使用すると、単語全体のみに一致できます。
正規表現バージョンは Linq よりも高速である必要があると思います。
文字列を分割してみることができます (この場合、右側のセパレーターはスペースにすることができますが、大文字と小文字によって異なります)。equals メソッドを使用して、一致があるかどうかを確認した後、次のようにします。
private Boolean findString(String baseString,String strinfToFind, String separator)
{
foreach (String str in baseString.Split(separator.ToCharArray()))
{
if(str.Equals(strinfToFind))
{
return true;
}
}
return false;
}
そして、使用することができます
findString("Label label Labels:", "label", " ");
LINQ バージョンを試すことができます。
string str = "Hello1 Hello Hello2";
string another = "Hello";
string retVal = str.Split(" \n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.First( p => p .Equals(another));
検索文字列の一部として区切り文字を含めることができるように、単語の間に区切り文字 (crlf) があるようです。
そうでない場合は、Liviu の提案に従います。