检测字符串是否包含大写字符

QFD*_*Dev 36 c# regex string

是否有使用正则表达式来检测字符串是否包含大写字符的替代方法?目前我正在使用以下正则表达式:

Regex.IsMatch(fullUri, "[A-Z]") 
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我经常听到古老的格言"如果你使用正则表达式,你现在有两个问题".

MAV*_*MAV 80

您可以使用LINQ:

fullUri.Any(char.IsUpper);
Run Code Online (Sandbox Code Playgroud)


nvo*_*igt 19

RegEx似乎有点矫枉过正:

bool containsAtLeastOneUppercase = fullUri.Any(char.IsUpper);
Run Code Online (Sandbox Code Playgroud)


gee*_*ubb 10

您可能也可以这样做(如果您想要在.NET 1.0中运行的东西:):

bool hasUpperCase = !fullUri.ToLower().Equals(fullUri);
Run Code Online (Sandbox Code Playgroud)

虽然这个简单的正则表达式可能会正常工作


Alb*_*rto 10

使用Linq!

fullUri.Any(c=> char.IsUpper(c));
Run Code Online (Sandbox Code Playgroud)


Tim*_*ker 5

您的正则表达式只能找到 ASCII 大写字母。方便的是,.NET 正则表达式引擎可识别 Unicode,使您能够执行以下操作:

Regex.IsMatch(fullUri, @"\p{Lu}") 
Run Code Online (Sandbox Code Playgroud)

尽管我认为在您的情况下您不希望字符串中出现非 ASCII 字母(考虑到它的名称)。