19 Stimmen

Wie kann man prüfen, ob nur ausgewählte Zeichen in einer Zeichenkette enthalten sind?

Wie kann man am besten und einfachsten prüfen, ob eine Zeichenkette nur die folgenden Zeichen enthält?

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

Ich möchte ein Beispiel wie diesen Pseudocode:

//If String contains other characters
else
//if string contains only those letters

Bitte und danke :)

35voto

Pablo Lalloni Punkte 2455
if (string.matches("^[a-zA-Z0-9_]+$")) {
  // contains only listed chars
} else {
  // contains other chars
}

6voto

Andrew White Punkte 51732

Für diese bestimmte Klasse von Strings verwenden Sie den regulären Ausdruck " \w +".

Pattern p = Pattern.compile("\\w+");
Matcher m = Pattern.matcher(str);

if(m.matches()) {} 
else {};

Beachten Sie, dass ich das Pattern-Objekt zum Kompilieren der Regex verwende einmal so dass es nie wieder kompiliert werden muss, was gut sein kann, wenn Sie diese Prüfung in a-lot oder in einer Schleife durchführen. Wie in den Java-Dokumenten...

Wenn ein Muster mehrfach verwendet werden soll verwendet werden soll, ist die einmalige Kompilierung und Wiederverwendung wiederverwenden, ist es effizienter als als jedes Mal diese Methode aufzurufen.

1voto

gertas Punkte 16291

Ich bin dran:

static final Pattern bad = Pattern.compile("\\W|^$");
//...
if (bad.matcher(suspect).find()) {
  // String contains other characters
} else {
  // string contains only those letters
}

Oben wird nach einzelnen nicht übereinstimmenden oder leeren Zeichenfolgen gesucht.

Und laut JavaDoc für Muster :

\w  A word character: [a-zA-Z_0-9]
\W  A non-word character: [^\w]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X