Java, assurez-vous d'une chaîne ne contient que des alphanumériques, des espaces et des tirets
Question
En Java, je dois vous assurer une chaîne ne contient que des caractères alphanumeric
, space
et dash
.
J'ai trouvé la org.apache.commons.lang.StringUtils
de classe et la méthode presque suffisante isAlphanumericSpace(String)
... mais je dois aussi inclure des tirets.
Quelle est la meilleure façon de le faire? Je ne veux pas utiliser des expressions régulières.
La solution
Hum ... Le programme juste vous en utilisant String.chatAt ( int ), il est assez facile ...
itérer tous char dans la chaîne en utilisant un indice de position, comparez-le en utilisant le fait que les caractères ASCII 0 à 9, a à z et A à Z utiliser les codes consécutifs, donc vous avez seulement besoin pour vérifier que caractères x vérifie numériquement l'une des conditions suivantes:
- entre '0' et '9'
- entre 'a' et 'z'
- entre « A et 'Z'
- un espace ' «
- un trait d'union '-'
Voici un exemple de code de base (en utilisant CharSequence, qui vous permet de passer d'une chaîne mais aussi un StringBuilder comme arg):
public boolean isValidChar(CharSequence seq) {
int len = seq.length();
for(int i=0;i<len;i++) {
char c = seq.charAt(i);
// Test for all positive cases
if('0'<=c && c<='9') continue;
if('a'<=c && c<='z') continue;
if('A'<=c && c<='Z') continue;
if(c==' ') continue;
if(c=='-') continue;
// ... insert more positive character tests here
// If we get here, we had an invalid char, fail right away
return false;
}
// All seen chars were valid, succeed
return true;
}
Autres conseils
Vous pouvez utiliser:
StringUtils.isAlphanumericSpace(string.replace('-', ' '));
Il suffit de parcourir la chaîne, en utilisant les méthodes de la classe de caractères dans java.lang.Character pour vérifier si chaque caractère est acceptable ou non. Ce qui est sans doute tout ce que les méthodes de StringUtils font, et les expressions régulières sont juste une façon de conduire un moteur généralisé à bien faire la même chose.
Vous avez 1 2 options: 1. Compose une liste de caractères qui peut être dans la chaîne, puis une boucle sur la chaîne de vérification pour vous assurer que chaque personnage est dans la liste. 2. Composez une liste de caractères qui ne peuvent être dans la chaîne, boucle puis sur la chaîne de vérification pour vous assurer que chaque caractère est pas dans la liste.
Choisissez toute option plus rapide pour composer la liste.
certainement utiliser une expression regex. Il ne sert à rien d'écrire votre propre système quand un système très complet mis en place pour cette tâche exacte. Si vous avez besoin d'en savoir plus sur ou à la brosse sur regex consultez ce site Web, il est grand: http://regexr.com
Je vous mettre au défi sur celui-ci.