# wörter im string zählen



## paul87 (6. Mai 2008)

hallo leute. bin dabei ne methode zu entwickeln, die in einem string ein ganz bestimmtes wort zählt. also ich übergebe der methode den string und ein wort und die methode soll die anzahl des wortes in diesem string zählen.


hier ist ein anfang, ich weis das das nicht funktioniert. aber vllt kann man es so in etwa machen.


```
public static int zähler(String str, String tag){
                 boolean count;
                 int oft=0;

                 while(count=str.indexOf("tag") !=-1){
                     if(count=true) oft++;
                 }
                 return oft;
             }
```

hoffe jemand weis wie ich weiter kommen kann. vielen dank.

also ich weis auch warum diese methode so nciht funktionieren kann. aber ich weis einfach nciht weiter...

mfg
paul


----------



## Gast (6. Mai 2008)

Ich würde den String anhand der Leerzeichen zerlegen String.split(), und in einem Array speichern. Dann würde ich das Array durchlaufen und mit einer if Abfrage prüfen ob das jeweilige Wort dem gesuchten Wort entspricht und dementsprechend einen zähler hochzählen.


----------



## paul87 (6. Mai 2008)

das hört sich gut an. aber wie genau soll ich das array durchlaufen? mit einer schleife? wenn ja wie soll die aussehen?


----------



## L-ectron-X (6. Mai 2008)

Eigentlich brauchst du das Array nicht durchlaufen.

int anzahl = strArr.length;

sollte reichen.

Edit: Sorry, das würde nur die Anzahl der Worte ermitteln.

Eine Schleife kann so aussehen:

```
int x = 0;
for(int i = 0; i < strArr.length; i++) {
   if(strArr[i].equals(suchwort)) {
      x++;
   }
}
```


----------



## paul87 (6. Mai 2008)

wenn ich das so mache wie du es beschrieben hast, dann bekomme ich ja nur die anzahl aller wörter im string. aber nicht die anzahl eines bestimmten wortes.

ich hab das jetzt so weit hinbekommen, mit dem split(). nur weisi ch noch nicht wie man das leerzeichen als trennzeichen eingibt.


----------



## L-ectron-X (6. Mai 2008)

String[] strArr = str.split(" ");


----------



## 0001001 (6. Mai 2008)

Hier ein Beispiel, evtl. hilft dir das weiter:


```
public class StringZaehler {

	public static void main(String[] args) {
		String einstring = "Alle freien Menschen wo immer sie leben mögen sind Bürger Berlins und deshalb bin ich als freier Mensch stolz darauf sagen zu können Ich bin ein Berliner";
		System.out.println(zaehle(einstring, "ich"));
	}

	public static int zaehle(String derText, String gesuchtesWort){
		int counter = 0;
		String[] array = derText.split(" ");
		
		for(int i=0;i<array.length;i++){
			if(array[i].equalsIgnoreCase(gesuchtesWort)){	// wort gefunden
				counter++;	
			}
		}		
		return counter;
	}
}
```


----------



## paul87 (6. Mai 2008)

danke für die antworten. ich hab das alles genauso übernommen, trotzdem kommt wenn ich nur den counter ausgeben möchte 0 als ausgabe. 

und was hat das IgnoreCase hinter equals zu bedeuten?


----------



## 0001001 (6. Mai 2008)

equalsIgnoreCase tut genau das gleiche wie equals, es ingnoriert aber zusätzlich die groß- und kleinschreibung. Also ist "ICH" = "ich" = "Ich". 

Falls dein String nicht gefunden wird untersuch doch mal ob du kommata und punkte in deinem String hast. Denn "Ich," ist ungleich "Ich"

Du kannst es auch mal mit L-ectron-X' Methode probieren.
String[] array = text.split("ich");
System.out.println(array.length);

Ansonsten müsstest du mal den String posten.


----------



## paul87 (6. Mai 2008)

vielen dank nochmal für die antworten. es hat sich gezeigt das mein gesuchtes wort nicht mit einem leerzeichen von einem anderen wort getrennt war im string. somit konnte er es auch nciht finden. 

aber trotzdem danke für eure mühe...


----------

