优雅的方式来计算字符串中的字母数字字符?

mag*_*tic 6 .net c# linq string alphanumeric

我正在寻找一种优雅的方式,最好是一个简短的linq表达式来计算给定字符串包含多少个字母数字字符.

我现在这样做的"无聊"方式是这样的:

int num = 0;
for (int i = 0; i < password.Length; i++)
{
    if (!char.IsLetterOrDigit(password, i))
    {
        num++;
    }
}
if (num < MinRequiredNonAlphanumericCharacters)
    return false;
Run Code Online (Sandbox Code Playgroud)

这已经相当短了,但我确信有一些linq魔法,这可以用更短,同样可理解的表达来完成,对吧?

Aus*_*nen 17

这是获得字母和数字计数的快速而又脏的LINQ方式:

password.Count(char.IsLetterOrDigit)
Run Code Online (Sandbox Code Playgroud)

这更像是你正在做的事情的直接副本:

password.Count(c => !char.IsLetterOrDigit(c))
Run Code Online (Sandbox Code Playgroud)