replace("%20"," ") wird nicht erkannt

marlone_de

Grünschnabel
Hallo,

ich habe ein Problem. Ich wollte in einem String das %20 durch ein Leerzeichen ersetzen. Doch leider wird mein replace so nicht erkannt. Java läut da ohne Fehlermeldung rübern. Wenn ich allerdings replace("\%20"," ") verwende sagt mein NetBean mir "illegal escape character" und das Programm lässt sich nicht ausführen. Ich weiß nicht, was ich noch machen soll.
 
Das Backslash \ wird zum sog. escapen benutzt. Da manche Zeichen, wie das " auch schon im Code verwendung hat oder man bestimmte nicht darstellbare Zeichen hat, wie zum beispiel ein Tab \t oder eine neue Zeile: \r\n oder \r oder \n (je nach OS).
Und wenn du ein Backslash schreiben willst musst diesen natürlich auch escapen, d.h. "\\" gibt ein \

Daher musst du entweder:
("%20"," ") schreiben für keine escapesequenz oder
("\\%20"," ") wenn du ein Backslash haben willst

\% gibt es einfach nicht.

http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html

P.S.: Dieser Fehler wird in eclipse schon beim kompilieren oder code "anschauen" angezeigt.
 
Danke für die schnelle Antwort aber mir geht es hauptsächlich um das Prozentzeichen (%), Ich hab die Programmzeile replace("%20"," ") mal im Debugmodul betrachtet und gesehen, dass java die 20 wohl für einen int hält und wenn ich eine watch auf die %20 mache kriege ich folgeden Meldung.
>Encountered "%" at line 1, column 1.
Was expecting one of:
"++" ...
"--" ...
"+" ...
"-" ...
"~" ...
"!" ...
<INTEGER_LITERAL> ...
<FLOATING_POINT_LITERAL> ...
<CHARACTER_LITERAL> ...
<STRING_LITERAL> ...
"true" ...
"false" ...
"null" ...
"this" ...
<IDENTIFIER> ...
"super" ...
"(" ...
"new" ...
"void" ...
"boolean" ...
"char" ...
"byte" ...
"short" ...
"int" ...
"long" ...
"float" ...
"double" ...
<
Und mein String enthält immernoch die %20, die ich durch ein Leerzeichen ersetzen wollte.
 
Hast du es denn mal mit replace("\\%20"," ") probiert?

Das ganze klingt so nach Escaping/Unescaping. Dafür gibts sicher auch schon fertige Sachen.

Vielleicht hilft das weiter StringEscapeUtils
 
Ja hab ich, geht auch nicht.
Mein Problem ist, dass ich einen String habe, der so in der Art aussieht "Ein%20Satz%20indem%20keine%20Leerzeichen%20sind,%20sondern%20Prozent%20zwanzig" und da will ich die %20 durch Leerzeichen ersetzen, so dass ich "Ein Satz indem keine Leerzeichen sind, sonder Prozent zwanzig" erhalte. Und die Frage ist jetzt nur, wie ich das hinkriegen.
 
Glaube ich nicht dass du das probiert hast. Funktioniert nämlich wunderbar:

Java:
public static void main(String[] args) {
    	String strg = "Ein%20Satz%20indem%20keine%20Leerzeichen%20sind,%20sondern%20Prozent%20zwanzig";
    	strg = strg.replaceAll("\\%20", " ");
    	System.out.println(strg);
}
 
Zurück