Chaîne contient au moins un chiffre
Je suis en train de voir si une chaîne contient au moins un chiffre ou une minuscule ou une majuscule.
J'ai écrit quelque chose comme ceci:
int combinations = 0;
string pass = "!!!AAabas1";
if (pass.matches("[0-9]")) {
combinations = combinations + 10;
}
if (pass.matches("[a-z]")) {
combinations =combinations + 26;
}
if (pass.matches("[A-Z]")) {
combinations =combinations + 26;
}
Cependant, je ne comprends pas pourquoi je ne peut pas obtenir des combinaisons d'aller à 36. Ils ont juste rester à 0. Ce que je fais mal?
Donner internationale des utilisateurs de l'amour--utf8 pour la victoire! Aussi les gens à l'aide de signes de ponctuation et d'autres caractères spéciaux doivent obtenir un crédit supplémentaire.
Robertson: je pensais que Java représentation interne est l'UTF-16...
Oui, mais il ne fait que donner du crédit pour les 0-9A-Za-z, pas y compris l'espace de-/ :-@ [-` { -~ et puis le plein de caractères UTF-8.
Robertson: je pense que j'ai (un peu pédant) le point est que l'UTF-8 et UTF-16 sont des représentations binaires pour le même jeu de caractères Unicode.
Oui, je ne dis pas que le code suivant ne fonctionnera pas, je dis ce que des "combinaisons" est censé représenter n'est pas augmenté en raison de ce que la contribution de la ponctuation, de l'UTF-8 ou UTF-16 caractères que peut fournir le mot de passe.
Robertson: je pensais que Java représentation interne est l'UTF-16...
Oui, mais il ne fait que donner du crédit pour les 0-9A-Za-z, pas y compris l'espace de-/ :-@ [-` { -~ et puis le plein de caractères UTF-8.
Robertson: je pense que j'ai (un peu pédant) le point est que l'UTF-8 et UTF-16 sont des représentations binaires pour le même jeu de caractères Unicode.
Oui, je ne dis pas que le code suivant ne fonctionnera pas, je dis ce que des "combinaisons" est censé représenter n'est pas augmenté en raison de ce que la contribution de la ponctuation, de l'UTF-8 ou UTF-16 caractères que peut fournir le mot de passe.
OriginalL'auteur idipous | 2011-06-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser de Modèle au lieu de cela, je pense que "correspond à" méthode semble pour l'ensemble de la chaine de caractères correspond à l'expression régulière.
Essayez le code suivant:
OriginalL'auteur Hrzio
Voici ma tentative. Remarque, il utilise des catégories unicode pour la validation est donc non-langue latine-friendly.
Voici le résultat:
OriginalL'auteur hoipolloi
Le problème est que
matches
essaie de faire correspondre l'ensemble de la chaîne d'entrée.Au lieu de cela, essayez de créer un
Pattern
, puis à partir de là créer unMatcher
, et ensuite utiliser le trouver méthode.La Modèle javadoc devrait aider beaucoup.
OriginalL'auteur joeslice
Tout à l'aide d'une regex pour ce qui peut évidemment travailler, Goyave's CharMatcher classe peut être un peu plus approprié à ce que vous essayez de faire:
OriginalL'auteur ColinD
OriginalL'auteur CooL AndroDev