2 Stimmen

Groovy or java: wie kann '\' durch '\\' in 'C:\www\web-app\StudyReports\test.bat' ersetzt werden?

Mein Ziel ist es letztendlich, einen String wie den folgenden zu haben

def newline = 'C:\\www\web-app\StudyReports\\test.bat'

aber in meiner alten Zeile gibt es nur ein '\'.

Ich habe verschiedene Möglichkeiten ausprobiert, um Folgendes zu verwenden:

def newline = oldline.replaceAll(/\\/,'//')

aber das hat nicht kompiliert.

3voto

Alan Moore Punkte 70949

Wenn ich du wäre, würde ich die Backslashes durch Schrägstriche ersetzen:

def newline=oldline.replaceAll(/\\+/, '/')

Sowohl Java als auch Windows akzeptieren den Schrägstrich als Dateiseparator, und es ist viel einfacher damit zu arbeiten.

2voto

Christian Semrau Punkte 8588

Um ein einzelnes Backslash in Java oder Groovy abzugleichen, müssen Sie es 4 Mal eingeben, denn sowohl der Compiler als auch das Regex-Engine verwenden das Backslash als Escape-Zeichen. Wenn Sie also "\\\\" als String in Java eingeben, erzeugt der Compiler den String, der die beiden Zeichen \\ enthält, die das Regex-Engine als Übereinstimmung für genau ein Backslash \ interpretiert.

Der Ersetzungsstring muss auch zweimal maskiert werden, daher müssen Sie 8 Backslashes als Ersetzungsstring eingeben.

2voto

polygenelubricants Punkte 362173

In Java würden Sie die String.replace(CharSequence target, CharSequence replacement) verwenden, die NICHT auf Regex basiert.

Sie würden etwas wie folgt schreiben:

String after = before.replace("\\", "\\\\");

Dadurch wird jedes \ in before verdoppelt.

String path = "1\\2\\\\3\\4";
System.out.println(path);
path = path.replace("\\", "\\\\");
System.out.println(path);

Die Ausgabe des obigen Codes ist (zu sehen auf ideone.com)

1\2\\3\4
1\\2\\\\3\\4

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X