web-dev-qa-db-ja.com

文字列に大文字が含まれているかどうかを検出する

正規表現を使用して、文字列に大文字が含まれているかどうかを検出する代替手段はありますか?現在、次の正規表現を使用しています。

Regex.IsMatch(fullUri, "[A-Z]") 

それはうまくいきますが、「正規表現を使用している場合、2つの問題がある」という古い格言をよく耳にします。

34
QFDev

LINQを使用できます。

fullUri.Any(char.IsUpper);
75
MAV

正規表現は過剰であるようです:

bool containsAtLeastOneUppercase = fullUri.Any(char.IsUpper);
19
nvoigt

あなたもおそらくすることができます(.NET 1.0で動作するものが必要な場合:):

bool hasUpperCase = !fullUri.ToLower().Equals(fullUri);

この単純な正規表現はおそらく正常に動作しますが

10
geedubb

Linqを使用してください!

fullUri.Any(c=> char.IsUpper(c));
10
Alberto

正規表現はASCII大文字のみを検索します。便利なことに、.NET正規表現エンジンはUnicode対応であり、

Regex.IsMatch(fullUri, @"\p{Lu}") 

あなたの場合、あなたはあなたの文字列に非ASCII文字を期待していないと思います(その名前を考慮して)。

3
Tim Pietzcker