Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen?
Nein, geschwungene Klammern in einem Regulaeren Ausdruck geben entweder eine Anzahl oder einen Bereich an.
Code:
[u]{0,2} = Die Zeichengruppe mit dem Zeichen "u" soll zwischen 0 und 2 beliebig oft vorkommen (beides inklusive).
u{0,2} = Das Zeichen "u" soll zwischen 0 und 2 beliebig oft vorkommen (beides inklusive).
u{0,} = Das Zeichen "u" soll zwischen 0 und unendlich beliebig oft vorkommen (beides inklusive).
u{,2} = Das Zeichen "u" soll zwischen 0 und 2 beliebig oft vorkommen (beides inklusive).
Du kannst also mit Regulaeren Ausdruecken nicht eine solche Logik ausdruecken die du gerne haettest (okat, ich nehme das zurueck bevor mir jemand das REGEX DES TODES in's Gesich klatscht welches dass tatsaechlich kann).
Die einfachere Moeglichkeit hier waere eine simple Schleife in welchem du einfach die "u"s zaehlst:
Java:
// Der "alte" Weg, welche "char"s benutzt. Ein "char" kann aber nicht den vollen
// Raum von Unicode abbilden, daher sollte man eher "codePoints" verwenden.
int uCounter = 0;
for (char character : "4ufhiuh89f3h4iu8".toCharArray()) {
if (character == 'u') {
uCounter++;
}
}
System.out.println("Anzahl \"u\": " + Integer.toString(uCounter));
Java:
// Der "neue" Weg, welcher mit "codePoints" arbeitet und daher keine
// Probleme mit Unicode hat.
int uCounter = 0;
int uCodePoint = Character.codePointAt("u", 0);
for (int codePoint : "4ufhiuh89f3h4iu8".codePoints().toArray()) {
if (codePoint == uCodePoint) {
uCounter++;
}
}
System.out.println("Anzahl \"u\": " + Integer.toString(uCounter));
Mit der Anzahl kannst du dann machen was du willst.
Eventuell ein noch besserer Weg waere es, sich mit dem String den du suchst sich durch den String zu bewegen, in etwas so:
Java:
int uCounter = 0;
int nextUIndex = "4ufhiuh89f3h4iu8".indexOf("u");
while (nextUIndex >= 0) {
uCounter++;
nextUIndex = "4ufhiuh89f3h4iu8".indexOf("u", nextUIndex + 1);
}
Der Vorteil von der Methode ist, dass du nach beliebig langen Strings suchen kannst um diese zu zaehlen.
String s = "4ufhiuh89f3h4iu8";
int count = 0;
for (int from = s.indexOf("u"); from > 0; from = s.indexOf("u", from + 1)) count++;
System.out.println(count);
Du kannst also mit Regulaeren Ausdruecken nicht eine solche Logik ausdruecken die du gerne haettest (okat, ich nehme das zurueck bevor mir jemand das REGEX DES TODES in's Gesich klatscht welches dass tatsaechlich kann).