it-swarm.com.de

Wie ermittle ich, ob ein String nicht-alphanumerische Zeichen enthält?

Ich benötige eine Methode, mit der ich feststellen kann, ob ein String nicht alphanumerische Zeichen enthält.

Zum Beispiel, wenn der String "abcdef?" oder "abcdefà", die Methode muss true zurückgeben.

67
lugeno

Verwenden von Apache Commons Lang:

!StringUtils.isAlphanumeric(String)

Alternativ können Sie die Zeichen von String durchlaufen und Folgendes überprüfen:

!Character.isLetterOrDigit(char)

Sie haben noch ein Problem: Ihre Beispielzeichenfolge "abcdefà" ist alphanumerisch, da à ist ein Brief. Aber ich denke, Sie möchten, dass es als nicht alphanumerisch betrachtet wird, oder ?!

Vielleicht möchten Sie stattdessen einen regulären Ausdruck verwenden:

String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();
134
Fabian Barney

Ein Ansatz besteht darin, dies mit der String-Klasse selbst zu tun. Nehmen wir an, Ihre Zeichenfolge ist ungefähr so:

String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");

eine andere Möglichkeit ist die Verwendung einer externen Bibliothek wie Apache Commons:

String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
26
loscuropresagio

Sie müssen jedes Zeichen in der Zeichenfolge durchgehen und Character.isDigit(char); oder Character.isletter(char); überprüfen

Alternativ können Sie Regex verwenden.

5
Mechkov

Verwenden Sie diese Funktion, um zu überprüfen, ob eine Zeichenfolge alphanumerisch ist:

public boolean isAlphanumeric(String str)
{
    char[] charArray = str.toCharArray();
    for(char c:charArray)
    {
        if (!Character.isLetterOrDigit(c))
            return false;
    }
    return true;
}

Sie müssen keine externen Bibliotheken importieren, und der Code kann problemlos geändert werden, wenn Sie später verschiedene Überprüfungen für Zeichenfolgen durchführen möchten.

2
Dan Bray

Wenn Sie die Apache Commons-Bibliothek verwenden können, hat Commons-Lang StringUtils eine Methode namens isAlphanumeric(), die genau das tut, wonach Sie suchen.

1
Shaun

string.matches("^\\W*$"); sollte tun, was Sie wollen, enthält jedoch kein Leerzeichen. string.matches("^(?:\\W|\\s)*$"); stimmt auch mit Leerzeichen überein.

1
nike4613

Sie können die statische Methode isLetter (char c) der Character-Klasse in Java.lang verwenden.

public boolean isAlpha(String s) {
    char[] charArr = s.toCharArray();

    for(char c : charArr) {
        if(!Character.isLetter(c)) {
            return false;
        }
    }
    return true;
}
0
Oguz