Estoy buscando una manera elegante, preferiblemente una expresión de linq corta, para contar cuántos caracteres de caracteres alfanuméricos contiene una cadena dada.¿Manera elegante de contar caracteres alfanuméricos en una cadena?
La forma 'aburrido' lo hago ahora es la siguiente:
int num = 0;
for (int i = 0; i < password.Length; i++)
{
if (!char.IsLetterOrDigit(password, i))
{
num++;
}
}
if (num < MinRequiredNonAlphanumericCharacters)
return false;
Esto es bastante corta ya, pero estoy seguro de que con un poco de magia LINQ esto se puede hacer en una expresión aún más corto, igualmente fácil de entender, ¿derecho?
La forma de linq no se presta también a una muy buena optimización, que es dejar de buscar la cadena una vez que tenga suficientes caracteres alfanuméricos. Bueno, dado el contexto de las contraseñas y su longitud, tal vez no es una optimización 'muy buena' ... – corsiKa
@corsiKa no creo que vaya a la optimización tanto azúcar elegante/azúcar sintáctica ... –
Así es, yo Estoy haciendo hash PBKDF2 justo después de esa parte, por lo que algunos milisegundos aquí no son el problema de todos modos. – magnattic