Wie überprüft man, ob eine Zeichenfolge zwei Sternchen enthält?

9

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.

    
Achaius 28.07.2010, 07:37
quelle

6 Antworten

5

Sie könnten String.matches mit einem regulären Ausdruck verwenden:

%Vor%

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.

    
Mark Byers 28.07.2010, 07:40
quelle
9
%Vor%

Bearbeiten: Diese Lösung ging davon aus, dass die Anforderung "mindestens zwei Sterne" hat.

    
Joachim Sauer 28.07.2010 07:42
quelle
3

Mindestens zwei Möglichkeiten:

  • Regex

    %Vor%
  • Schleife

    %Vor%
Bozho 28.07.2010 07:40
quelle
3

Hier ist eine Nicht-Regex-Alternative, die mit jeder literalen Zeichenfolge funktioniert:

%Vor%

Im Wesentlichen ist der Algorithmus:

%Vor%     
polygenelubricants 28.07.2010 08:28
quelle
2
%Vor%     
bhups 28.07.2010 07:46
quelle
0

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

    
Sean Patrick Floyd 28.07.2010 08:47
quelle

Tags und Links