5

おはよう、

if文字列に値が含まれているかどうかを確認する場合のステートメントには、次のものがあります。

if (string.Contains("Value1"))    
{    
}    

ステートメント全体を書き続けることなく、文字列をifステートメントのより多くの値と比較するにはどうすればよいですか?たとえば、以下のステートメントを避けるために

if ((string.Contains("Value1") && (string.Contains("Value2")) && (string.Contains("Value3")))    
{    
}

ありがとうございました

4

5 に答える 5

7

したがって、基本的に、すべての値が文字列に含まれているかどうかを確認する必要があります。幸いなことに(LINQの助けを借りて)、これはほぼ文字通りC#に変換できます。

var values = new String[] {"Value1", "Value2", "Value3"};

if (values.All(v => myString.Contains(v))) {
    ...
}

同様に、文字列に値が含まれているかどうAllを確認する場合は、に置き換えますAny

于 2012-11-08T07:17:44.667 に答える
3

さて、あなたはLINQを使うことができます:

string[] requiredContents = { "Foo", "Bar", "Baz" };

if (requiredContents.All(x => text.Contains(x))
{
    ...
}

短絡&&演算子と同様に、条件を満たさないAll値が見つかるとすぐに停止することに注意してください。(他の場所でも同様の方法で使用する場合は、条件を満たす値が見つかるとすぐに停止します。)Any

でも、適度に少ない数だけは気にしないでしょう。余分な括弧がなければ、それほど悪くはありません。

if (text.Contains("foo") && text.Contains("bar") && text.Contains("Baz"))
{
}

本当にかなりの数の値があった場合(おそらく約5で線を引く)、または値のセットがパラメーターとして渡された場合、または他の方法で変更された場合にのみ、より一般的な形式を使用し始めます。

于 2012-11-08T07:19:57.950 に答える
1
if(stringArray.Any(s => stringToCheck.Contains(s)))

すべての部分文字列が含まれていることを確認する場合は、次のように変更AnyAllます。

if(stringArray.All(s => stringToCheck.Contains(s)))
于 2012-11-08T07:29:54.063 に答える
1

すべての値を含めるには「your」文字列が必要なので、次のようにします。

var values = new String[] {"Value1", "Value2", "Value3"};
var s = yourString;

if (values.Count(v => s.Contains(v)) == values.Length) {
    ...
}
于 2012-11-08T07:19:22.837 に答える
1

これが最善の解決策ですか?おそらくそうではありません。読み取り可能で拡張可能ですか?はい。

var matches = {"string1", "string2", "string3","string-n"};
var i = 0;
foreach(string s in matches)
{
    if(mystring.Contains(s))
    {
        i++;
    }
}
if(i == matches.Length)
{
    //string contains all matches.
}
于 2012-11-08T07:23:20.183 に答える