strings auf inhalt vergeliechen mit equals !

Status
Nicht offen für weitere Antworten.

eldios

Mitglied
ahoi
hab da ein problem und zwar hab ich ne aufgabe bekommen, bei der ich gucken soll wie häufig ein teilstring in der ziechenkette vorkommt...

und das mit der equals methode.

hab ich acuh soweit hinbekommen wenn der fall vorkommt das meinetwegen in der zeichenkette 1234445ghpjklmnop hp hp steht und im teilstring hp müsste er mir als antwort ja eine 3 asugeben...was er allerdings bei der equals methode nicht macht. dor bekomm ich ne 2.

denke mal das liegt an daran das das erste hp in diesem lange ausdruck steht und equals ja guckt ob das teilstring genau dem ersten teil entspricht und nicht auf inhalt prüft.

wie kann ich das nu machen? soll irgendwie mit substring gehen aber wie bekomm ich das damit hin?

bin gerade mal ein wenig zu blöd dazu.

hoffe ihr könnt mir helfen...

das is die methode so wie sie bisher war:

Code:
static int search(String Zeichenkette, String Teilstring)
	{
		int anzahl =0 ; //definition das nur ganze zahlen angenommen werden können
		int index =0;
		String[] Zeichenstring = Zeichenkette.split(" "); //teilung der zeichekette bei jedem leerzeichen in substring
		if(Zeichenkette.length() < Teilstring.length())//abfangen ob der teilstring größer als die zeichenkette ist, wenn ja gib -1 aus
			return -1;
		for(int i=0; i< Zeichenstring.length ; i++) //prüft substring array auf die länge und zählt von 0 bis zum ende des arrays
			{	
				if(Teilstring.equals(Zeichenstring[i])) //überprüfung der einzelnen substrings mit dem teilstring
				{	
					anzahl=anzahl + 1; //wenn übereinstimmung vorhanden die anzhal einen hoch zählen
				}
				
			}
		return anzahl; //rückgabe wert von der aufzählung
		
	}
 
int gefunden=0;
Code:
for (int i = 0; i<zeichenkette.length-suchstring.length();i++){
if (zeichenkette.substring(i, teilstring.length()).equals(teilstring)) gefunden++;
}
return gefunden;
 
2 kleine Korrekturen in der Schleife:

Code:
int gefunden=0;
for (int i = 0; i<=zeichenkette.length()-suchstring.length();i++){
if (zeichenkette.substring(i, i+teilstring.length()).equals(teilstring)) gefunden++;
}
return gefunden;

Dazu solltest du folgende Dinge irgendwie behandeln:
- Teilstring null?
- Zeichenkette null?
- Teilstring == ""?
- Zeichenkette < Teilstring (hattest du ja schon - würde allerdings einfach 0 zurückgeben)
 
check die schleife nicht so ganz. geht jetzt bis zum ende der zeichenkette minus des suchstrings und guckt sich jedes zeichen an was da vorkommt oder wie?

wenn ich für den suchstring tielstring schreibe klappt das anscheinend nicht...was genau is der suchstring bei dir?


bekomme dann auch noch ne Stringindexoutofboundsexception...
 
jPat hat gesagt.:
upps, aber
ich möchte ja nicht eldos den spass verderben...😉

Jetzt hat er doch noch seinen Spaß... :wink:

@eldios: Du gehst einfach Schritt für Schritt von vorne bis hinten durch die Zeichenkette und prüfst, ob du auf deinen Teilstring triffst.
 
ah klasse funzt hab nur beim namen umschreiben was vergesesn hin zu schreiben....

Zeichenkette.length()-suchstring.length()

hier wird geguckt wie lang der suchstring ist oder wie kann man das verstehen? is mir noch nicht gnaz klar warum ich die beiden längen der strings von ein ander abziehen muss
 
String Zeichenkette ist der String, in dem gesucht werden soll und
String suchstring ist der zu suchende Text

Zeichenkette.length()-suchstring.length() heißt, das die for-schleife ja schon abbrechen kann, falls der "übrig gebliebene" Teil von Zeichenkette kleiner ist als der suchstring.

Denn: Warum soll man einen String suchen , der länger ist als der übrig gebliebene? 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben