2017-07-12 1 views
-3

Ich möchte einen einzelnen Schrägstrich durch doppelte Schrägstriche in einem Pfad ersetzen, aber doppelte Schrägstriche unberührt lassen. Ich habe versucht, die folgenden:So ersetzen Sie Schrägstriche

string oldPath = "\\new\new1\new2\"; 
string newPath = old.replace("\\", "\\\\"); 

Mein erwartete Ergebnis ist, dass newPath ist wie folgt:

"\\new\\new1\\new2\\" 
+0

Welchen Fehler erhalten Sie? – gprathour

+2

Bitte zeigen Sie tatsächlich ausführbaren Code, insbesondere für Ihre Eingabe-String. * Wenn * der String tatsächlich '\ n' enthält, dann gibt es kein' '' '' 'zu ersetzen. – luk2302

+2

'\ n' ist ein neues Zeilenzeichen. So ist Ihre Zeichenfolge wie \ newNEW LINEew1NEW LINEew2 – Jens

Antwort

1

Das liegt daran, dass \n als neue Zeile interpretiert wird. Entkomme noch einmal.

Immer besser, verwenden Sie java.nio.file.Path anstelle von String, um mit Dateien und Verzeichnispfaden zu arbeiten. Verwenden Sie auch System.getProperty("file.separator"), um mit dem Dateitrennzeichen \ \ / zu arbeiten.

auf einem Unix-basierten System ist Pfadseparator /:

/** 
* Succeeds on Unix-based systems. On Windows, replace test Path and expected Path file separators 
* with backslash(es). 
*/ 
@Test 
public void test() { 
    final Path oldPath = Paths.get("//new/new1/new2"); 
    final String newPath = oldPath.toString().replace(System.getProperty("file.separator"), 
      System.getProperty("file.separator") + System.getProperty("file.separator")); 
    System.out.println(System.getProperty("file.separator")); 
    System.out.println(newPath); 
    assertEquals("//new//new1//new2", newPath); 
} 
+0

Schöne Antwort. Das einzige ist, dass Ihr 'newPath'' //// new // new1 // new2' ist. –

+0

Ich denke nicht, führe den Testfall;) – kerner1000

+0

habe ich gemacht bevor ich den Kommentar geschrieben habe. Nicht als Test, aber 'newPath' wird in der Konsole als' \\\\ new \\ new1 \\ new2' gedruckt. –

1

Zu allererst Ihre oldPath in Java keine gültige Zeichenfolge ist. Es endet mit \, das ist ein Sonderzeichen und es muss etwas folgen. Nehmen wir an, es sollte am Ende \\ sein.

Abgesehen davon, wie @Jens in den Kommentaren erwähnt, \n ist eine neue Zeile Zeichen, so versteht Java Ihre Zeichenfolge als \new(new_line)ew1(new_line)ew2\.

Nun, wenn Sie Ihr Ergebnis wollen als \\new\\new1\\new2\\ angezeigt werden müssen Sie diesen

String newPath = old.replace("\\", "\\\\").replace("\n", "\\\\n"); 

Hinweis verwenden, dass die Reihenfolge der replace Methoden in diesem Fall wichtig ist.

Verwandte Themen