问问题
202137 次
6 回答
98
关于什么:
//true if it doesn't contain letters
bool result = hello.Any(x => !char.IsLetter(x));
于 2012-10-14T17:28:29.107 回答
76
用这个替换你for loop
的:
errorCounter = Regex.Matches(yourstring,@"[a-zA-Z]").Count;
记得使用Regex
类,你必须using System.Text.RegularExpressions;
在你的导入
于 2012-10-14T17:31:00.743 回答
24
您可以使用正则表达式:
Regex.IsMatch(hello, @"^[a-zA-Z]+$");
如果你不喜欢这样,你可以使用 LINQ:
hello.All(Char.IsLetter);
或者,您可以遍历字符,并使用 isAlpha:
Char.IsLetter(character);
于 2012-10-14T17:23:01.277 回答
7
于 2012-10-14T17:22:31.793 回答
4
对于最小的变化:
for(int i=0; i<str.Length; i++ )
if(str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')
errorCount++;
您可以使用正则表达式,至少如果速度不是问题并且您并不真正需要实际的确切计数。
于 2012-10-14T17:24:13.770 回答
3
使用正则表达式无需将其转换为 char 数组
if(Regex.IsMatch("yourString",".*?[a-zA-Z].*?"))
{
errorCounter++;
}
于 2012-10-14T17:23:30.220 回答