13

文字列内の完全一致を検索するにはどうすればよいですか? たとえば、次のテキストを含む文字列があるとします。

ラベル
ラベル:
ラベル

そして、ラベルを検索します。他の 2 つではなく、最初の一致のみを取得したいのです。Contains メソッドと IndexOf メソッドを試しましたが、2 番目と 3 番目の一致も得られました。

4

4 に答える 4

26

次のような正規表現を使用できます。

bool contains = Regex.IsMatch("Hello1 Hello2", @"(^|\s)Hello(\s|$)"); // yields false
bool contains = Regex.IsMatch("Hello1 Hello", @"(^|\s)Hello(\s|$)"); // yields true

\b は単語境界チェックであり、上記のように使用すると、単語全体のみに一致できます。

正規表現バージョンは Linq よりも高速である必要があると思います。

参照

于 2010-11-09T07:50:32.420 に答える
3

文字列を分割してみることができます (この場合、右側のセパレーターはスペースにすることができますが、大文字と小文字によって異なります)。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", " ");
于 2010-11-09T08:39:46.920 に答える
1

LINQ バージョンを試すことができます。

string str = "Hello1 Hello Hello2";
string another = "Hello";
string retVal = str.Split(" \n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
                   .First( p => p .Equals(another));
于 2010-11-09T08:08:23.833 に答える
1

検索文字列の一部として区切り文字を含めることができるように、単語の間に区切り文字 (crlf) があるようです。

そうでない場合は、Liviu の提案に従います。

于 2010-11-09T10:06:31.277 に答える