# substring zählen



## Bonsai (13. Jan 2012)

Hallo Community,

ich habe folgenden String gegeben:"abc def abc ghi abc jkl abc mno abc"

Jetzt würde ich gern zählen wollen wie oft abc vorkommt. Ich weiß dass das auf alle fälle mit der funktion charAt() funktioniert, aber wenn mann jetzt einen längeren substring zählen wöllte, würde es mit charAt() einfach viel zu lang werden. Jetzt wollte ich fragen ob es dafür eine elegantere Lösung gibt?

Grüße
Bonsai


----------



## Michael... (13. Jan 2012)

Man könnte mit der split-Methode von String den String an den Leerzeichen auftrennen und in ein String Array zerlegen. Danach müsste man nur durch das Array iterieren und die Werte überprüfen.


----------



## Bonsai (13. Jan 2012)

jo klaro splt... tststs. Immer dieses brett vorm kopp danke. klappt wunderbar


----------



## Bonsai (13. Jan 2012)

wenn ich den bestimmten string im array zählen möchte, dann zählt er nicht hoch.


```
String str = "abc def abc ghi abc jkl abc mno abc";
		String[] strarray = str.split(" ");
		line++;
		for(int i = 0; i<=11; i++){
			str1=strarray[i];
			System.out.println(str1);
			str1=str1.trim();
			if(str1=="abc"){
				count++;
				System.out.println(count);
}
```


----------



## Michael... (13. Jan 2012)

Objekte zu denen auch Strings gehören vergleicht man mit 
	
	
	
	





```
equals(...)
```
 auf Gleichheit, mit 
	
	
	
	





```
==
```
 vergleicht man auf Identität.


----------



## Bonsai (13. Jan 2012)

-.- jo jetzt wo dus sagst, erinnert sich mein hirn wieder an was....


----------



## TR (13. Jan 2012)

ich würde es ggf. mit indexOf machen.
die frage ist wenn 
	
	
	
	





```
String str = "abcdefabcghiabcjklabcmnoabc"
```
 gegeben ist, was soll er dann machen? Mit meiner Lösung wird trotzdem gezählt.


```
String str = "abc def abc ghi abc jkl abc mno abc";
String search = "abc";
int counter = 0;
int pos = 0;
do{
	pos = str.indexOf(search, pos);
	if (pos > -1){
		counter++;
		pos++;
	}else{
		break;
	}
}while(true);
System.out.println("Anzahl: " + counter);
```


----------



## Bonsai (13. Jan 2012)

danke das du das erwähnt hast, allerdings dteht abc für ein wort. von daher wird es nicht vorkommen, jedenfalls in meinem fall nicht, dass der string ohne leerzeichen ist. Aber ich denke falls das problem jemand hat und zufällig das thema liest wird es sicher gut passen


----------

