13

だから私は現在このように見える条件を持っています...

if (input.Contains(",") || input.Contains("/") || input.Contains(@"\") || input.Contains("."))

チェックしたい文字をさらにいくつか追加する必要があり、同じことを達成するためのより凝縮された構文があるかどうか疑問に思っていましたか? SQL の IN 演算子に似たものですか?

if ( input IN (",", "/", @"\", ....etc )  )

多くのコードを追加せずにこれを達成するためのクールなトリックを知っている人はいますか?

4

8 に答える 8

30

正規表現の使用を検討してください (確認したい文字を括弧内に指定してください - それらのいくつかはエスケープする必要があることに注意してください):

Regex.IsMatch(input, @"[,/]");

また

new[] {",", "/"}.Any(input.Contains)
于 2012-05-02T17:55:59.403 に答える
11

これはどう?

    if(input.IndexOfAny(new char[] { ',', '/', '\\', '.' })>=0)
    {

    }
于 2012-05-02T17:57:35.297 に答える
8

これは最短で勝てますか?

@".,/\".Any(input.Contains)
于 2012-05-02T18:04:54.347 に答える
4

Linq を使用できます。

if ( ",/\\.".ToCharArray().Any( c => input.Contains( c ) ) )
于 2012-05-02T17:58:53.887 に答える
4

String.IndexOfAny を使用できます。これは、配列内の一連の文字のいずれかの文字列をスキャンします。

if (e.Label.IndexOfAny(new char[]{',', '/', @'\', '.' /* other chars here */}) > -1)
于 2012-05-02T17:59:05.640 に答える
4

試す

If (input.IndexOfAny(new char[] { ',', '/', '\\', '.' }) >= 0) {
    ...
}

また

If (input.IndexOfAny(@",/\.".ToCharArray()) >= 0) {
    ...
}
于 2012-05-02T17:58:29.253 に答える