Vergleichen von Zeichen in Java
Es ist schon eine Weile her, seit ich getan habe, alle Java so meine syntax ist nicht die größte im moment.
Ich möchte, um zu überprüfen, die eine char-variable ist eine von 21 spezifischen chars, was ist der kürzeste Weg, kann ich dies tun?
Beispiel:
if(symbol == ('A'|'B'|'C')){}
Scheint nicht zu funktionieren. Muss ich es schreiben wie:
if(symbol == 'A' || symbol == 'B' etc.)
InformationsquelleAutor der Frage Alex | 2011-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Ihre Eingabe ist ein Zeichen und die Zeichen, die Sie überprüft sind meist aufeinander, Sie könnten versuchen, diese:
Allerdings, wenn Ihr input ist ein string ein kompakter Ansatz (aber langsamer), ist die Verwendung eines regulären Ausdrucks mit einer Charakter-Klasse:
Wenn Sie einen Charakter, müssen Sie zuerst, um es in einen string konvertieren, bevor Sie können einen regulären Ausdruck verwenden:
InformationsquelleAutor der Antwort Mark Byers
Wenn Sie wissen, alle Ihre 21 Zeichen im Voraus, dass Sie schreiben können Sie alle, wie eine Schnur, und dann überprüfen Sie es wie folgt:
Ich denke, das ist der kürzeste Weg.
InformationsquelleAutor der Antwort Marc
Die erste Anweisung, die Sie haben ist wahrscheinlich nicht das, was Sie wollen...
'A'|'B'|'C'
ist eigentlich bitweise operation 🙂Ihre zweite Aussage ist richtig, aber Sie haben 21 ORs.
Wenn die 21 Zeichen sind "konsekutiv" die oben genannten Lösungen ist in Ordnung.
Wenn nicht können Sie pre-berechnen einer hash-Satz der gültigen Zeichen und tun Sie etwas wie
InformationsquelleAutor der Antwort Alvin
Könnte es klarer geschrieben als eine switch-Anweisung mit fall-z.B. durch
InformationsquelleAutor der Antwort Richard Miskin
Wenn Sie bestimmte chars sein sollte:
InformationsquelleAutor der Antwort smas
Mit Guave:
Oder wenn viele dieser Zeichen sind eine Auswahl, wie "A" , "U", aber einige sind nicht:
Können Sie auch erklären, dass diese als
static final
- Feld, damit der matcher muss nicht jedes mal erstellt.InformationsquelleAutor der Antwort ColinD
Option 2 funktionieren wird. Sie können auch ein
Set<Character>
oderInformationsquelleAutor der Antwort rlibby
diese:
beachten Sie, dass Sie nicht brauchen, um erstellen Sie einen separaten String mit den Buchstaben von A-Z.
InformationsquelleAutor der Antwort Daniel He
Ja, Sie brauchen, es zu schreiben, wie die zweite Zeile. Java nicht hat, die python-Stil syntaktischen Zucker von Ihrer ersten Linie.
Alternativ könnten Sie Ihre gültige Werte in ein array und überprüfen Sie für die Existenz von
symbol
im array.InformationsquelleAutor der Antwort Endophage
pseudocode wie ich habe nicht ein java-sdk auf mich:
InformationsquelleAutor der Antwort tenpn
Können Sie einfach schreiben Sie Ihre chars als Strings, und verwenden Sie die equals-Methode.
Beispiel:
InformationsquelleAutor der Antwort Anony
Einen Weg, es zu tun mit einem
List<Character>
konstruiert überlastet convenience factory-Methoden in java9 ist als :InformationsquelleAutor der Antwort nullpointer