Probleme mit Strings...

  • Themenstarter Themenstarter Alex
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

Alex

Gast
Hallo,
ich soll aus so einem String folgende Zeichen ersetzen:
"\" durch "\\"
"(" durch "\("
")" durch "\)"

leider funktioniert folgender Code nicht:
Code:
a.replaceAll("\","\\");
a.replaceAll("(","\(");
a.replaceAll(")","\)");
denn irgendwie hat Java Probleme mit dem Backslash 🙁
wie kann ich die Zeichen trotzdem ersetzen ?

Danke für eure Antworten,
Alex
 
Ganz einfach, der Backslash ist ein Kennzeichen für Sonderzeichen
\n neue Zeile
\t Tabulator

versuch mal
Code:
a.replaceAll("\\", "\\\")
ohne Gewähr ("\\" müsste gehen, aber ob "\\\" das geht weiß ich nicht)


wenn du zum Beispiel eine Windows-Pfadangabe machst die so aussieht:
Code:
"C:\Temp\Hallo.txt"
wird Java auch meckern. Richtig wäre
Code:
"C:\\Temp\\Hallo.txt"
oder
Code:
"C:/Temp/Hallo.txt"
 
Vatar hat gesagt.:
Code:
a.replaceAll("\\", "\\\")
ohne Gewähr ("\\" müsste gehen, aber ob "\\\" das geht weiß ich nicht)
\ entspricht "\\"
:arrow: \\ entspricht "\\\\"

Oder nicht?
 
Mit
Code:
a = a.replaceAll("\\", "\\");
fliegt er auch bei mir raus. Müsste aber eigentlich funktionieren.
Bei
Code:
a = a.replaceAll("\\", "\\\");
kommt
Code:
String literal is not properly closed by a double-quote
Syntax error, insert ")" to complete Expression
Kann ich auch nachvollziehen, da mit dem 3. "\" das Anführungszeichen anonymisiert wird
 
ich wünsche euch schonmal viel Spaß - ich glaube das Problem gabs hier schonmal.....
Denn:
Code:
String s = "\\";
String t = s.replaceAll("\\", "\\\\");
System.out.println(s + " - " + t);
wirft eine java.util.regex.PatternSyntaxException....

Probierts einfach mal aus :wink:
 
Aber dafür muss es doch mindestens ein Workaround geben.
Kann ja nicht sein, dass Java mit einem String nicht fertig wird.
Zumal ich mir vorstellen kann, dass dieses Problem öfter auftritt...
 
Hi,

ich würs mal mit char probieren.
Also so:
Code:
   String str      = "BLABLUBB////BLaubb\\\\etc";
   for(int i=0; i<str.length(); i++)
       if(str.charAt(i) == '\')
            str = str.substring(0,i) + "\" + str.substring(i+1);
 usw für die anderen zeichen!
HeyMan
 
Wenn schon Char, dann bitte keine Tippfehler:

if(str.charAt(i) == '\')

[Edit: Heee! hier wird nicht einfach korrigiert! Wie sieht denn mein Beitrag nun aus? 😀 ]
 
wenn kompliziert :lol: , dann
Code:
String s = "adsfdf\\adfadf";
StringBuffer b = new StringBuffer(s);
char[] c = s.toCharArray();
for(int i = 0; i < c.length; i++) {
  if(c[i] == '\\') {
	b.insert(i,'\\');
  }
}
System.out.println(a + " --> " + b.toString());
 
HeyMan hat gesagt.:
wenn kompliziert , dann
ich wusste nicht, dass 3 Zeilen Code dich ünberfordern :wink:
HeyMan

Das stimmt - daher kann man meinen Code noch verkürzen :wink:
Code:
String s = "adsfdf\\adfadf";
StringBuffer b = new StringBuffer(s);
for(int i = 0; i < b.length(); i++) {
  if(b.charAt(i) == '\\') {
     b.insert(i++,'\\');
  }
}
System.out.println(s + " --> " + b.toString());
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben