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à" muss die Methode true zurückgeben.
java
string
character
alphanumeric
lugeno
quelle
quelle
Antworten:
Verwenden von Apache Commons Lang:
Alternativ können Sie die Zeichenfolgen von String durchlaufen und Folgendes überprüfen:
!Character.isLetterOrDigit(char)
Sie haben noch ein Problem: Ihre Beispielzeichenfolge "abcdefà" ist alphanumerisch, da
à
es sich um einen Buchstaben handelt. 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();
quelle
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 besteht darin, eine externe Bibliothek wie Apache Commons zu verwenden:
String s = "some text"; boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
quelle
hasSpecialCharacters(String)
mit seiner eigenen Definition von "speziell".String.matches(...)
In Java wird geprüft, ob der reguläre Ausdruck mit der gesamten Zeichenfolge übereinstimmt .boolean hasNonAlpha = ! … ^[A-Za-z0-9 ]*$
Sie müssen jedes Zeichen in der Zeichenfolge durchgehen und
Character.isDigit(char);
oder aktivierenCharacter.isletter(char);
Alternativ können Sie Regex verwenden.
quelle
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; }
Es erspart das Importieren externer Bibliotheken und der Code kann leicht geändert werden, wenn Sie später verschiedene Validierungsprüfungen für Zeichenfolgen durchführen möchten.
quelle
Wenn Sie die Apache Commons-Bibliothek verwenden können, verfügt Commons-Lang
StringUtils
über eine MethodeisAlphanumeric()
, die genau das tut, wonach Sie suchen.quelle
string.matches("^\\W*$");
sollte tun, was Sie wollen, aber es enthält keine Leerzeichen.string.matches("^(?:\\W|\\s)*$");
stimmt auch mit Leerzeichen überein.quelle
Sie können die statische Methode isLetter (char c) der Zeichenklasse 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; }
quelle
Obwohl dies für Zahlen nicht funktioniert, können Sie überprüfen, ob die Werte für Klein- und Großbuchstaben gleich sind oder nicht. Bei nicht alphabetischen Zeichen sind sie gleich. Sie sollten zuvor nach Zahlen suchen, um die Benutzerfreundlichkeit zu verbessern
quelle