String auf bestimmtes Zeichen prüfen

catdriver

Mitglied
Hallo zusammen,

ich habe ein bestimmtes String "Hoher Weg@40000@München". Wie kann ich nun prüfen ob der char '@' 2-mal in dem String vorkommt? Und wenn es in dem Fall ist, liefert true, sonst wenn z.B. wie "Hoher Weg@München", sollte false zurückgeliefert werden.
Ich glaube da gibt's bestimmt Methode in Java-API, die ich verwenden kann. Aber welche kann ich denn verwenden weiß ich nicht.
Kann jemand mir vielleicht helfen?;(
 
Java:
String str = "Hoher Weg@40000@München";
boolean zweiAts = str.indexOf("@", str.indexOf("@") + 1) != -1;

Schlägt aber auch an, wenn es mehr als 2 @ im String gibt.

Wenns genau 2 @ sein sollen, dann das hier

Java:
String str = "Hoher Weg@40000@München";
int scndAt = str.indexOf("@", str.indexOf("@") + 1);
boolean zweiAts = scndAt != -1 && str.indexOf("@", scndAt + 1) == -1;
 
Zuletzt bearbeitet:
Moin,

da hast Du sicherlich mehrere Möglichkeiten.

Sind es komplexe Ausdrücke, dann solltest Du reguläre Ausdrücke ("regex") verwenden!

Bei den einfachen Strings, die Du als Beispiel nanntest, kannst Du auch zeichenweise durch den String laufen und ganz simpel die Anzahl der gesuchten Zeichen zählen!

Gruß
Klaus
 
Ich würd bei einem char durch das Chararray durchlaufen:
Java:
public int getCount(String input, char c) {
    int count = 0;
    for (char act : input.toCharArray()) {
        if (act == c) {
            count++;
        }
    }
    return count;
}
Oder bei einem String als Suchbegriff etwas "Regex":
Java:
public static int getCount(String input, String search) {
    Pattern p = Pattern.compile(Pattern.quote(search));
    Matcher m = p.matcher(input);
    int count = 0; // ging das nicht irgendwie einfacher?
    while (m.find()) {
        count++;
    }
    return count;
}
 
Vllt so:
Java:
String test="@haleol@haslkdfjl@";
String check=test.replaceAll("[^@]", "");
System.out.println(check); // -> @@@
System.out.println(check.length()); // -> 3
 

Zurück
Oben