Java, assurez-vous d'une chaîne ne contient que des alphanumériques, des espaces et des tirets

StackOverflow https://stackoverflow.com/questions/749742

  •  09-09-2019
  •  | 
  •  

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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top