tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
4161
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    marlone_de marlone_de ist offline Mitglied
    Registriert seit
    Nov 2005
    Beiträge
    10
    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.
     

  2. #2
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    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/...x/Pattern.html

    P.S.: Dieser Fehler wird in eclipse schon beim kompilieren oder code "anschauen" angezeigt.
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  3. #3
    marlone_de marlone_de ist offline Mitglied
    Registriert seit
    Nov 2005
    Beiträge
    10
    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.
     

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    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
     

  5. #5
    marlone_de marlone_de ist offline Mitglied
    Registriert seit
    Nov 2005
    Beiträge
    10
    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.
     

  6. #6
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Glaube ich nicht dass du das probiert hast. Funktioniert nämlich wunderbar:

    Code java:
    1
    2
    3
    4
    5
    
    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);
    }
     

  7. #7
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    Das \\ braucht man hier, weil replaceAll eine "Regular Expression" braucht

    Schaut ma in die API unter Pattern oder String
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  8. #8
    marlone_de marlone_de ist offline Mitglied
    Registriert seit
    Nov 2005
    Beiträge
    10
    tatsächlich auf einmal gehts. Vielen Dank. Ich setzt das Thema dann mal auf erledigt.
     

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 07.11.10, 19:51
  2. Antworten: 6
    Letzter Beitrag: 21.03.08, 15:00
  3. HTML-Code wird nicht "erkannt"
    Von DataFox im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 05.02.08, 22:12
  4. Antworten: 8
    Letzter Beitrag: 01.12.05, 17:13
  5. Brenner (Plextor) wird nicht "mehr" erkannt.
    Von PatrickD im Forum Hardware
    Antworten: 0
    Letzter Beitrag: 27.01.03, 12:54