Java, Stellen Sie sicher, ein String enthält nur alphanumerische Zeichen, Leerzeichen und Bindestriche

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

  •  09-09-2019
  •  | 
  •  

Frage

In Java, muss ich sicherstellen, dass ein String nur alphanumeric enthält, space und dash Zeichen.

fand ich die Klasse org.apache.commons.lang.StringUtils und die fast adäquate Methode isAlphanumericSpace(String) ... aber ich muss auch Bindestriche enthalten.

Was ist der beste Weg, dies zu tun? Ich will nicht, reguläre Ausdrücke verwenden.

War es hilfreich?

Lösung

Hum ... es einfach selbst programmieren mit String.chatAt ( int ), ist es ziemlich einfach ...

Iteration durch all char in der Zeichenkette eines Positionsindex verwendet wird, dann vergleichen Sie es mit der Tatsache, dass ASCII-Zeichen 0 bis 9, a bis z und A bis Z Verwendung aufeinanderfolgenden Codes, so dass Sie nur brauchen dass Zeichen x zu überprüfen, überprüft numerisch eine der Bedingungen:

  • zwischen '0' und '9'
  • zwischen 'a' und 'z'
  • zwischen ‚A und 'Z'
  • ein Leerzeichen ' ‚
  • ein Bindestrich '-'

Hier ist ein einfaches Code-Beispiel (unter Verwendung von CharSequence, die Sie einen String übergeben kann, sondern auch ein String als 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;
}

Andere Tipps

Sie können verwendet werden:

StringUtils.isAlphanumericSpace(string.replace('-', ' '));

iterieren Gerade durch die Zeichenfolge, die Zeichenklasse-Methoden in java.lang.Character mit testen, ob jedes Zeichen akzeptabel ist oder nicht. vermutlich alles, was ist, dass die StringUtils Methoden tun, und reguläre Ausdrücke sind nur ein Weg, um eine generalisierte Motor des Fahrens viel das gleiche zu tun.

Sie haben 1 von 2 Möglichkeiten: 1. Erstellen Sie eine Liste von Zeichen, die in der Zeichenfolge sein, dann Schleife über die Zeichenfolge überprüft jedes Zeichen, um sicherzustellen, in der Liste ist. 2. Erstellen Sie eine Liste von Zeichen, die nicht in der Zeichenfolge werden können, dann Schleife über die Zeichenfolge überprüft jedes Zeichen, um sicherzustellen, ist nicht in der Liste.

Wählen Sie, was Option schneller ist die Liste zusammenzustellen.

Auf jeden Fall einen regulären Ausdruck verwenden. Es gibt keinen Grund, Ihr eigenes System, wenn ein sehr umfassendes System für diese genaue Aufgabe schriftlich anzuzeigen. Wenn Sie lernen müssen, oder auf regex auffrischen dann diese Website Check-out, es ist toll: http://regexr.com

Ich würde dich auf diesen einen herauszufordern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top