Sto cercando un modo elegante, preferibilmente una breve espressione di linq, per contare quanti caratteri alfanumerici contiene una determinata stringa.Un modo elegante per contare i caratteri alfanumerici in una stringa?
Il modo 'noioso' lo faccio ora è questa:
int num = 0;
for (int i = 0; i < password.Length; i++)
{
if (!char.IsLetterOrDigit(password, i))
{
num++;
}
}
if (num < MinRequiredNonAlphanumericCharacters)
return false;
Questo è piuttosto breve già, ma sono sicuro che con un po 'di magia LINQ questo può essere fatto in una, un'espressione altrettanto comprensibile anche più breve, destra?
Il modo linq non si presta bene ad un'ottimizzazione molto buona, che consiste nel fermare la ricerca della stringa una volta che si hanno abbastanza caratteri alfanumerici. Va bene visto il contesto delle password e la loro lunghezza, forse non è un'ottimizzazione molto buona ... – corsiKa
@corsiKa non penso che stia andando per l'ottimizzazione tanta eleganza-tizing/zucchero sintattico ... –
Esatto, io sto facendo l'hashing PBKDF2 subito dopo quella parte, quindi alcuni millisecondi qui non sono comunque il problema. – magnattic