是否有使用正则表达式来检测字符串是否包含大写字符的替代方法?目前我正在使用以下正则表达式:
Regex.IsMatch(fullUri, "[A-Z]")
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)
虽然这个简单的正则表达式可能会正常工作
您的正则表达式只能找到 ASCII 大写字母。方便的是,.NET 正则表达式引擎可识别 Unicode,使您能够执行以下操作:
Regex.IsMatch(fullUri, @"\p{Lu}")
Run Code Online (Sandbox Code Playgroud)
尽管我认为在您的情况下您不希望字符串中出现非 ASCII 字母(考虑到它的名称)。