あなたが名前空間System.Linqのから拡張メソッド.Contains()
を使用することができます:ブール式が真であるかどうかを確認するために、
if (abc.ToLower().Contains('s')) { }
そして、いや、あなたはContains
ので== true
を必要としません。メソッドは拡張メソッドですが、私の解決策はいくつかのものを混乱させるようです。
if (abc.ToLower().IndexOf('s') != -1) { }
// or:
if (abc.IndexOf("s", StringComparison.CurrentCultureIgnoreCase) != -1) { }
更新
あなたがしたい場合は、簡単に再利用するために独自の拡張機能メソッドを書くことができます:
public static class MyStringExtensions
{
public static bool ContainsAnyCaseInvariant(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.InvariantCultureIgnoreCase) != -1;
}
public static bool ContainsAnyCase(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.CurrentCultureIgnoreCase) != -1;
}
}
ここ
using System.Linq;
を追加する必要はありません2つのバージョンがあります
次に、このように呼び出すことができます。
if (def.ContainsAnyCaseInvariant('s')) { }
// or
if (def.ContainsAnyCase('s')) { }
ほとんどの場合、ユーザデータを扱う際には、実際にCurrentCultureIgnoreCase
(またはContainsAnyCase
拡張メソッド)を使用します。これは、システムが言語に依存する大文字/小文字の問題を処理できるようにするためです。 HTMLタグのような計算上の問題を扱うときは、不変の文化を使いたいと思う。例えば
:トルコでは、小文字で大文字I
はı
(ドットなし)、なくi
(ドット付き)あります。
うーん、私はchar型の引数を取るString.Containsの過負荷を見つけることができません。 –
@ScottSmithこれは[System.Linq](http://msdn.microsoft.com/en-us/library/system.linq.enumerable.contains.aspx)で定義されている拡張メソッドです。 – pauloya
'str.IndexOf( 's')> = 0'を使うのが好きですが、おそらく文体の違いに過ぎません。理解のために読むときは、私にとっては意味があります。 – CSS