String.endsWith

yidaki

Erfahrenes Mitglied
Hallo zusammen!

Ich hab ein kleines Problem...
ich möchte einen eingelesene String aus einer Datei, in ein "set" reinschreiben. Ist ja eigentlich kein prob, aber....
Das ist z.B ein Teil der Datei.
Code:
core.persistence.impl.internal.ConfigurableSQLCommandInterceptorWrapper;
Hier soll nun etwa sowas passieren
Code:
if ((string.startsWith("import fbach.")) &&(string.endsWith(";")))
d.h. das halt genau dieser Teil aus der Datei ausgeschippelt wird. Allerdings soll jedesmal das Wort vor dem ";" wegfallen sprich
Code:
core.persistence.impl.internal;
währe das richtige ergebnis!

Ich hoffe ich konnte mich klar genug ausdrücken

gruß
 
Zuletzt bearbeitet:
Hallo!

Code:
String str =
			"fbach.core.persistence.impl.internal.ConfigurableSQLCommandInterceptorWrapper;";
		int idxFirst = str.indexOf('.');
		int idxLast = str.lastIndexOf('.');
		System.out.println(
			str.substring(idxFirst + 1, idxLast)
				+ str.charAt(str.length() - 1));

Ausgabe:

core.persistence.impl.internal;

Gruß Tom
 
Dann mach doch einfach, wenn

if ((string.startsWith("import fbach.")) &&(string.endsWith(";")))

erfüllt ist, folgendes:
Nimm den kompletten String und verkürze ihn vom Ende her Zeichen für Zeichen bis zum letzten '.' und ersetze diesen dann durch ein Semikolon.
Oder (schöner) Du kannst mal schauen, ob es eine Möglichkeit in der String-Klasse gibt (habe grad keine API offen, müsste aber gehen), den Index für den letzten '.' zu finden und den String ab diesem Index abzschneiden. Dann den Punkt durch Semikolon ersetzen oder falls Du den Punkt weggeschnitten hast, einfach ein Semikolon anhängen.
 
Hab mich wohl leider doch getäuscht... naja, ich hab´s den code von tom ausprobiert und der klappt auch einwandfrei wenn ich den code direkt in die main schreibe uns sonst nix drin hab. in dem programmcode kommte die fehlermeldung StringIndexOutOfBoundsExeption: index out of range -1...

hier nochmal der code

Code:
while ((string = bufferdReader.readLine()) != null){  					if if if 
if (string.startsWith("import fbach."));{ //
int idxLast = string.indexOf('.');
string = string.substring(0, idxLast) + string.charAt(string.length()-1);
;


gruß
 
Zuletzt bearbeitet:
Hallo!

Dann ist dein String wohl mittendrin irgendwann einmal leer -> "";

einfach vorher mit

Code:
if(string.length() == 0)
   continue;

Vorher abprüfen...

Gruß Tom
 
Original geschrieben von yidaki
Hab mich wohl leider doch getäuscht... naja, ich hab´s den code von tom ausprobiert und der klappt auch einwandfrei wenn ich den code direkt in die main schreibe uns sonst nix drin hab. in dem programmcode kommte die fehlermeldung StringIndexOutOfBoundsExeption: index out of range -1...

hier nochmal der code

Code:
while ((string = bufferdReader.readLine()) != null){  					if if if 
if (string.startsWith("import fernbach."));{ //
int idxLast = string.indexOf('.');
string = string.substring(0, idxLast) + string.charAt(string.length()-1);
;

gruß

1. Das Codefragment kann nicht funktionieren, weil bereits in der ersten Zeile ein paar if zu viel drin sind. Auch das abschliessende Semikolon ist zu viel.
2. Benutze bitte eine IDE wie Eclipse, sie zeigt schon mal direkt an, an welcher Stelle es knallt.
3. Ich hoffe doch, dass die Variable namens string (übrigens eine ziemlich unglückliche Bezeichnung) vor der while-Schleife deklariert wird mit
String string;
4. Index = -1 besagt vermutlich, dass hier
int idxLast = string.indexOf('.');
kein '.' in dem String gefunden wurde. Diesen Fall solltest Du natürlich abprüfen und abfangen. Wenn Du Punkt 2 befolgst, kannst Du Dir im Debugger anschauen, was überhaupt in der Variable string drinne steht.
 
Sorry der Code war schlecht formatiert und deswegen sind da wohl syntaxfehler drin. die if bedingung war falsch die liest den string aus sobald er "import fbach." findet und dann bis zum ende des string... da ich eine Java Datei auslese ist der String natürlcih ziemlich lang... daher outofBoundsExeption...

so ´s

thx

Code:
while ((string = bufferdReader.readLine()) != null){  					
if (string.startsWith("import fbach.") && ((string.endsWith(";")))){ 
int idxLast = string.lastIndexOf('.');  					
string = string.substring(0, idxLast) + string.charAt(string.length()-1);  					
System.out.println(string);
 
Äh, funktioniert das jetzt oder nicht? Ach nee, wohl eher nicht.

Take that:

Code:
		while ((string = bufferdReader.readLine()) != null)
		{
			if (string.startsWith("import fbach.") && ((string.endsWith(";"))))
			{
				int idxLast = string.lastIndexOf('.');
				if (idxLast != -1) // alternativ auch: if (idxLast >= 0) 
				{
					string =
						string.substring(0, idxLast)
							+ string.charAt(string.length() - 1);
					System.out.println(string);
				}
			}
		}
 
Also meine zu letzt gepostete version hat auch funktioniert, aber ne weitere alternative is immer gut ;-)
 
Zurück