String replace() funktioniert nicht einwandfrei...

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.718
Hey Community,

Ich möchte gerne alle Zeichen, die man unter Windows nicht abspeichern kann aus dem Link fischen. Daher auch die replace() Methoden. Allerdings wenn ich im Debugger durch gehe, ersetzt er die Zeichen auch durch " ".

Code:
		String temp = new String("https://sou|ndcloud.com/kreamofficial</tove-?lo-talking-body-kre>am-re\\/?*mix:?in=jan-t-11/sets/chillig-house-electro");
		String save = new String();
		
		save = temp.replace("<", " ");
		save = temp.replace(">", " ");
		save = temp.replace("?", " ");
		save = temp.replace("\"", " ");
		save = temp.replace(":", " ");
		save = temp.replace("|", " ");
		save = temp.replace("\\", " ");
		save = temp.replace("/", " ");
		save = temp.replace("*", " ");
		
		System.out.println(save);

Allerdings bekomme ich dann doch wieder das hier heraus...
Input
https://sou|ndcloud.com/kreamofficial</tove-?lo-talking-body-kre>am-re\\/?*mix:?in=jan-t-11/sets/chillig-house-electro

Output
https://sou|ndcloud.com/kreamofficial</tove-?lo-talking-body-kre>am-re\/? mix:?in=jan-t-11/sets/chillig-house-electro

Wie kann ich das Problem lösen?
Da die letzte Methode "save = temp.replace("*", " ");" ist, gibt er mir komischerweise nur den Link heraus ohne Zeichen wie "*". Das ist auch der einzige Unterschied zwischen In- und Out/-put String!

MfG und Danke!
 
Vielleicht solltest du ab dem ersten replace mit save.replace() weiterarbeiten, anstatt mit temp.replace()?

Sogesehen steht in save am Ende eben das Ergebnis von "temp.replace("*", " ");" drin...

Du sagst ja nichts anderes als "ersetze Zeichen X in temp durch Y und speichere es in save". Damit wird temp aber nicht verändert, und das machst du jedes Mal.

EDIT:
Korrekt wäre es also so in etwa:
Code:
String temp = new String("https://sou|ndcloud.com/kreamofficial</tove-?lo-talking-body-kre>am-re\\/?*mix:?in=jan-t-11/sets/chillig-house-electro");
		String save = new String();
		
		save = temp.replace("<", " ");
		save = save.replace(">", " ");
		save = save.replace("?", " ");
		save = save.replace("\"", " ");
		save = save.replace(":", " ");
		save = save.replace("|", " ");
		save = save.replace("\\", " ");
		save = save.replace("/", " ");
		save = save.replace("*", " ");
		
		System.out.println(save);
 
Verkettung ftw :D Geht auch, da Strings zurückgegeben werden
Code:
 save = temp.replace("<", " ").replace(">", " ").replace("?", " ").replace("\"", " ");
 
Code:
		save = temp.replace('<', ' ');
		save = save.replace('>', ' ');
		save = save.replace('?', ' ');
		save = save.replace('\"', ' ');
		save = save.replace(':', ' ');
		save = save.replace('|', ' ');
		save = save.replace('\\', ' ');
		save = save.replace('/', ' ');
		save = save.replace('*', ' ');
Das bekomme ich damit:
Code:
https   sou ndcloud.com kreamofficial  tove- lo-talking-body-kre am-re    mix  in=jan-t-11 sets chillig-house-electro
 
Probier mal:

Code:
String temp = new String("https://sou|ndcloud.com/kreamofficial</tove-?lo-talking-body-kre>am-re\\/?*mix:?in=jan-t-11/sets/chillig-house-electro");
		String save = new String();
		
		temp = temp.replace("<", " ");
		temp = temp.replace(">", " ");
		temp = temp.replace("?", " ");
		temp = temp.replace(""", " ");
		temp = temp.replace(":", " ");
		temp = temp.replace("|", " ");
		temp = temp.replace("\", " ");
		temp = temp.replace("/", " ");
		save = temp.replace("*", " ");
		
		System.out.println(save);
 
Zuletzt bearbeitet:
Vermutlich Zeile 10 ändern in:
Code:
temp = temp.replace("\\", " ");

Oha, dann kommt eine Fehlermeldung, denn "" ist schon reserviert.
Wäre nett, wenn Du vollständige Fehlermeldungen posten würdest und nicht nur ne grobe Abschrift.
Mit Copy&Paste ist das ja kein Problem.

Gruß
Andy
 
Warum behandelst du das nicht alles in einer Zeile mittels regExp?

http://www.tutorialspoint.com/java/java_string_replaceall.htm


Code:
save = save.replaceAll("[<>?\\:|/*]", " ");
Ergänzung ()

Habs mal getestet und die mehrfachen Leerzeichen zu einem zusammengefasst.
Code:
save = save.replaceAll("[<>?\\\\:|/*]", " ").replaceAll("[\\s]{2,}", " ")
 
Zuletzt bearbeitet:
Zurück
Oben