我在将以下代码转换为for循环时遇到了一些麻烦。代码的目的是检查字符串中是否包含字母和数字。
else if (!string.Any(Char.IsLetter) || !string.Any(Char.IsDigit))
{
return false;
}
有什么想法吗?
答案 0 :(得分:6)
你的意思是这样吗?
bool anyLetter = false;
bool anyDigit = false;
foreach(var ch in str)
{
if(char.IsLetter(ch)) anyLetter = true;
if(char.IsDigit(ch)) anyDigit = true;
if(anyLetter && anyDigit) break;
}
return anyLetter || anyDigit;
请注意,如果此字符串应包含至少一个数字且一个字母,则需要使用&&
代替||
答案 1 :(得分:0)
由于Selman22似乎已经回答了这个问题,我发现的另一个解决方案是我猜你也可以使用RegEx:
letterCount = Regex.Matches(yourstring,@"[a-zA-Z]").Count;
numberCount = Regex.Matches(yourstring,@"\d").Count;
return letterCount != 0 && numberCount != 0;
答案 2 :(得分:0)
你的意思是一组字符串的循环吗?
var src = new List<string>{"A4C", "D3F", "G7I"};
var allHaveCharAndDigit = src.TrueForAll(s => s.Any(c => char.IsLetter(c)) && s.Any(c => char.IsDigit(c)));