Wie um zu überprüfen, die eine Zeichenfolge enthält andere Zeichen als die angegebene. (in Java)
Ich habe ein Programm fordert den Benutzer zur Eingabe einer dreistelligen Zeichenkette. Der string kann nur eine Kombination von a, b oder c an.
Wie kann ich überprüfen, ob die Zeichenfolge enthält andere Zeichen als diejenigen, die angegeben haben, ohne dabei eine million bedingte Anweisungen.
Pseudo Beispiel:
String s = "abq"
if (s.containsOtherCharacterThan(a,b,c))
System.exit(-1)
Verwenden Sie die regex-zu erreichen.
wie ist das nicht eine echte Frage? es ist genau das, was ich suchte
wie ist das nicht eine echte Frage? es ist genau das, was ich suchte
InformationsquelleAutor J.L.Louis | 2013-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aussehen für Zeichen, die NICHT a, b, oder c, verwenden Sie etwas wie das folgende:
Eigentlich bist du regex scheint zu scheitern.
System.out.println("abq".matches("[^abc]"));
gab mirfalse
, wo soll es gegeben habentrue
.noch gibt
false
. I don ' T wanna sound BÖSE, aber da diese Antwort wurde akzeptiert, besser gesagt eine funktionierende Lösung, wie sich andere Menschen beziehen können. Ich schlage vor, Sie führen Sie den code in Ihrer IDE, und fügen Sie Sie von dort.Geändert Antwort zu dem Ausdruck, den Sie gab
überprüfen Sie die aktualisierte Antwort - welche Sie akzeptiert. Dies ist die korrekte Version 😉
InformationsquelleAutor Indigenuity
Können Sie regex verwenden und seine Charakter-Klassen. Einfach aufrufen
(String#matches(String regex)
auf die Zeichenfolge, die Sie wollen, um zu überprüfen, ob es abgeglichen werden kann, völlig von regex.Dieser test soll passieren, es wird nur nach Zeichenfolgen enthält auch andere Zeichen angegeben, die in
[
]
so"abq"
sollte es passieren, da es enthältq
. Spiele werden prüfen, obs
enthält nura
,b
, undc
Zeichen. Wenn nicht wird es zurückfalse
, und durch die negation werden wir Sie in if-block.ist richtig -, dass den regulären Ausdruck bestehen würde, die in Ermangelung Beispiel
abq
.Ich stehe korrigiert. Du hast Recht
Sie sagen, "Passt zu prüfen, ob s enthält nur a -, b -, und c-Charaktere", aber das ist nicht das, was Ihre Muster überprüft. Vielleicht möchten Sie etwas sagen wie
^[abc]+$
, die tests den gesamten string, aber wie gesagt, der.matches()
Methode true zurück fürabq
, wie das Muster wird erfolgreich entsprechen dieab
Teil des Strings.entspricht standardmäßig überprüft die gesamte Zeichenfolge so
^
$
in diesem Fall nicht notwendig.System.out.println("abq".matches("[abc]+"))
Druckefalse
InformationsquelleAutor Pshemo
Könnte man split den string in ein array und eine Schleife durch den input von dort aus konnten Sie vergleichen, jeder Charakter.
Dies wird Ihnen sagen, wenn es irgendwelche anderen Zeichen. Wenn Sie wissen möchten, welche Zeichen Sie sind, die Sie einlegen könnte, die jedes einzelne Zeichen in eine HashMap, wo der Schlüssel ist das Zeichen und der Wert ist die Anzahl wie oft es verwendet wird.
InformationsquelleAutor Warren Green
Können Sie diesen regulären Ausdruck:-
[abc]+
.abq
.Ich bezweifle wirklich, dass.
abq
nicht dem Muster entsprechen[abc]+
.[abc]+
werden mit denab
ausabq
, so"abq".match("[abc]+")
zurücktrue
BEARBEITEN, ich stehe korrigiert. Du hast RechtYep - das Muster
[abc]+
bedeutet "jeder der Buchstaben a, b oder c, 1 oder mehrere Male', die passt auf dieab
Teilabq
.Erstens gibt es keine
match
Methode in derString
Klasse. Zweitens, nur nach dem Versuch diese in meine IDE, ich habe es gepostet. Für Ihre Bequemlichkeit, versuchen Sie, diesen code auszuführen, und sehen, was Sie bekommen.System.out.println("abq".matches("[abc]+"));
InformationsquelleAutor SudoRahul
Einen Weg ohne regex wäre eine Schleife durch die Schnur und Haken Sie jedes Zeichen, beenden, wenn der Charakter ist nichts aber a, b oder c an. Es gibt keinen Weg, es zu tun, nur mit String.enthält
InformationsquelleAutor jrajav