# String auf bestimmtes Zeichen prüfen



## catdriver (14. Okt 2011)

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?;(


----------



## Niki (14. Okt 2011)

mit regex könnts gehen:

boolean b = "foobar@foo@bar".matches(".*@.*@.*");


----------



## The_S (14. Okt 2011)

```
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


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


----------



## VfL_Freak (14. Okt 2011)

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


----------



## Michael... (14. Okt 2011)

Dazu bietet die Klasse String selbst verschiedenste Methoden an, einfach mal einen Blick in die API werfen:
String (Java Platform SE 6)
Hilfreich könnte z.B. indexOf(...) sein, ausserdem kann man mit Regulären Ausdrücken arbeiten s. matches(...)


----------



## faetzminator (14. Okt 2011)

Ich würd bei einem char durch das Chararray durchlaufen:

```
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":

```
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;
}
```


----------



## Tomate_Salat (14. Okt 2011)

Vllt so:

```
String test="@haleol@haslkdfjl@";
String check=test.replaceAll("[^@]", "");
System.out.println(check); // -> @@@
System.out.println(check.length()); // -> 3
```


----------



## catdriver (14. Okt 2011)

Problem gelöst mit regex und ich danke noch mal für eure Hilfe!


----------

