# Invalid escape sequenze



## Browny (28. Aug 2007)

hallo leute!
bei mir tritt folgendes problem auf!

actuellString = actuellString.replaceAll("PARAMETER:","\param");

An dieser Stelle meldet der Compiler eine "Invalid escape Sequenze". Das liegt daran, dass Java das single-Backslash nicht akkzeptiert! Hat  vielleicht irgendjemand einen Ansatz, wie ich dieses problem umgehen kann?
danke!


----------



## sparrow (28. Aug 2007)

actuellString = actuellString.replaceAll("PARAMETER:","\\param");


----------



## mikachu (28. Aug 2007)

was ist DAS denn?!? <- link


----------



## Browny (28. Aug 2007)

das hat nicht funktioniert!
der Compiler sagt immer noch, dass eine Invalid Escape Sequenze vorliegt!


----------



## mikachu (28. Aug 2007)

```
actuellString = actuellString.replaceAll("PARAMETER:","\\\\param");
```


----------



## Browny (28. Aug 2007)

Mit "\\\\param" würde es funktionieren, aber das hilft mir das Programm nur was nützt wenn "\param" eingefügt wird!
Gibt es da keine andere Lösung?


----------



## sparrow (28. Aug 2007)

Leider verstehe ich aus deinem vorherigen Post nicht was genau jetzt nicht funktioniert.
Die Lösung ist nämlich eigentlich recht gut.

sparrow


----------



## Browny (28. Aug 2007)

sorry hab mich verschrieben
Mit "\\\\param" würde es funktionieren, aber das hilft mir nichts  das Programm nützt mir nur was wenn "\param" eingefügt wird! 
Gibt es da keine andere Lösung?


----------



## sparrow (28. Aug 2007)

Was fügt er denn ein wenn du \\\\param nimmst?


----------



## Wildcard (28. Aug 2007)

\ ist sowohl für String Literale im Quellcode, als auch für Regex die Escape Sequenz. Daher muss fleißig maskiert werden  :wink:


----------



## Browny (28. Aug 2007)

ok ich erklär mal

Ich hab vor mir ein C-File. (Wird natürlich dann in eine text datei umgewandelt.) Mit Hilfe von Doxygen will ich jetz von diesem C-File eine Dokumentation erstellen. Doxygen kann ich jetz nicht genauer erklären, du musst nur wissen, dass es aus dem Quellcode alle Funktion,Variablen,Kommentare auslesen kann. Wichtig ist dabei, dass man bei den Kommentaren auch bestimmte Befehle benutzten kann, die dann das Doxygen lesen kann und dadurch z.B irgendwelche sachen hervorheben kann. Und einer dieser Befehle ist "\param". Daher muss ich genau diesen String einfügen!
Mit meinem Programm bin ich ja schon fast fertig, aber ich brauch halt diesen single-Backslash noch.
Ich hoff das träg ein bischen zum verständnis bei!
mfg


----------



## Wildcard (28. Aug 2007)

Wie gesagt, jeder \ muss in zweifacher Hinsicht maskiert werden, weil replaceAll einen RegEx erwartet.


----------



## Browny (28. Aug 2007)

Gibts da vielleicht irgendwo informationen, ich hab nämlich keine Ahnung wie ich da rangehn soll!


----------



## Wildcard (28. Aug 2007)

```
\\ -> \ im Regex -> EscapeSequence
\\\\ -> \\ im Regex -> \
\\\\\\\\ -> \\\\ im regex -> \\
```


----------



## Browny (28. Aug 2007)

ich versteh scho wie des funktionieren soll, aber wie implementiere ich des im Quellcode??????


----------



## Wildcard (28. Aug 2007)

Indem du statt vier mal \ acht mal \ schreibst!?


----------



## Browny (28. Aug 2007)

Danke man, es Funktioniert!
aber eine frage hätt ich da noch, warum ist das in Java so?


----------



## Wildcard (28. Aug 2007)

:autsch: 
Nochmal:
Für den Compiler ist \ in String Literalen die Escape Sequenz.
Will man also tatsächlich einen \ im String haben, muss er mit \ maskiert werden.
Gleich gilt für Reguläre Ausdrücke (und String#replaceAll erwartet einen solchen).
Auch dort ist \ ein Sonderzeichen das mit \ maskiert werden muss.


----------

