如何替换斜杠

时间:2017-07-12 09:01:21

标签: java

我想在路径中用双斜杠替换单斜杠,但不要影响双斜杠。 我尝试了以下方法:

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

我的预期结果是newPath如下:

"\\new\\new1\\new2\\"

2 个答案:

答案 0 :(得分:1)

这是因为\n被解释为新行。再逃一次。

无论如何更好,使用java.nio.file.Path代替String来处理文件和目录路径。另外,使用System.getProperty("file.separator")来处理文件分隔符\ \ /

在基于unix的系统上,路径分隔符为/

/**
 * 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);
}

答案 1 :(得分:1)

首先,您的oldPath不是Java中的有效字符串。它以\结尾,这是一个特殊的字符,必须跟着它。我们假设最后应该是\\

除此之外,正如@Jens在评论中提到的,\n是一个新的符号,因此java将您的字符串理解为\new(new_line)ew1(new_line)ew2\

现在,如果您希望结果显示\\new\\new1\\new2\\,则需要使用此

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

请注意,在这种情况下,replace方法的顺序非常重要。