Wir haben eine Zeichenketteneingabe und die folgenden Kombinationen sind gültig (z. B. sunday
, *sunday*
, sun*day*
, *sun*day
, su*nda*y
).
Wenn es nur ein einziges Sternchen enthält, ist es eine schlechte Eingabe.
Wie also überprüfe ich, ob die Zeichenfolge mehrere Sternchen enthält.
Sie könnten String.matches
mit einem regulären Ausdruck verwenden:
Wenn Sie genau zwei Sternchen möchten:
%Vor%Obwohl es für diese Aufgabe einfacher ist, einfach über die Zeichenfolge zu iterieren und die Sternchen zu zählen.
Bearbeiten: Diese Lösung ging davon aus, dass die Anforderung "mindestens zwei Sterne" hat.
Hier ist eine Nicht-Regex-Alternative, die mit jeder literalen Zeichenfolge funktioniert:
%Vor%Im Wesentlichen ist der Algorithmus:
%Vor%Aus Gründen der Vollständigkeit (obwohl mehrere gute Antworten gegeben wurden, ich mag die von Mark und Joachim am besten), hier sind zwei Versionen, die auf String.split(regex) und String.split (regex, limit) :
(Bearbeiten, Bugfix:)
%Vor%Ich schrieb einen kleinen Benchmark basierend auf unseren Antworten (ich weiß, Benchmarks bedeuten nicht viel, aber sie machen Spaß und meins ist wahrscheinlich Mist, ich weiß.) Wie auch immer, hier sind die Ergebnisse für einen Beispiellauf:
%Vor%Scheint so, als ob Nicht-Regex viel schneller ist als Regex. Das erwarten Sie wahrscheinlich.
EDIT: fester falscher Gewinner. Entschuldigung, Joachim