# Anzahl eines Buchstaben in einem String zählen



## vensch (7. Mai 2009)

Hallo Leute, mit welcher String-Methode kann ich die Anzahl eines bestimmten Buchstabens in einem String zählen lassen?

Danke schon mal


----------



## Leroy42 (7. Mai 2009)

Mit der Methode _charAt()_ durch
den String iterieren und alle gefundenen mitzählen.

Eine spezielle Methode dafür gibt es nicht.


----------



## vensch (7. Mai 2009)

Hm, kann ich das vielleicht auch mit der Methode indexOf machen?


----------



## Javalist (7. Mai 2009)

Ja kannst Du.
Dann musst Du aber den String für jeden Buchstaben durchsuchen und zählen. Beim String "a" wird das ziemlich teuer.

Mit charAt schaust Du, ob Du den Buchstaben schonmal gezählt hast. Wenn nein, legst Du ihn in Deine Zählerliste, wenn ja erhöhst Du den Zähler.


----------



## r0bbe (7. Mai 2009)

Du hast es zwar bestimmt mittlerweile hinbekommen, aber wer weiß.
ich würd's auch so machen wie Leroy geschrieben hat und hatte grad Langeweile:


```
public class CountChar {
	public static void main(String[] args) {
		System.out.println("Anzahl: " + countLetter("DasSs iSSSst ein Teststring", 'S'));
	}
	
	private static int countLetter(String str, char letter) {
		str = str.toLowerCase();		
		letter = Character.toLowerCase(letter);		
		int count = 0;
		
		for (int i = 0; i < str.length(); i++) {
			char currentLetter = str.charAt(i);
			if (currentLetter == letter)
				count++;			
		}
		
		return count;
	}
}
```


----------



## Javalist (7. Mai 2009)

Vergiss meinen Beitrag oben... das ist irgendwie nicht ganz richtig, was ich da geschrieben habe.. keine Ahnung, was ich im Kopf hatte


----------



## fjord (7. Mai 2009)

Natürlich kann man das auch mit _indexOf_ machen, würde ich persönlich sogar _charAt_ vorziehen, weil es weniger Funktionsaufrufe sind und deswegen vermutlich schneller ist. Ich habs mal zum Vergleich in r0bbes Code eingebaut:

```
public class CountChar {
    public static void main(String[] args) {
        System.out.println("Anzahl: " + countLetter("DasSs iSSSst ein Teststring", 'S'));
    }
    
    private static int countLetter(String str, char letter) {
        str = str.toLowerCase();        
        letter = Character.toLowerCase(letter);     
        int count = 0;        
        for (int pos = -1; (pos = str.indexOf(letter, pos+1)) != -1; count++);        
        return count;
    }
}
```


----------



## vensch (9. Mai 2009)

Vielen Dank!


----------

