我怎么把.Any变成for循环?

时间:2014-04-30 00:38:45

标签: c# linq for-loop

我在将以下代码转换为for循环时遇到了一些麻烦。代码的目的是检查字符串中是否包含字母和数字。

else if (!string.Any(Char.IsLetter) || !string.Any(Char.IsDigit))
{
    return false;
}

有什么想法吗?

3 个答案:

答案 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)));