我想在路径中用双斜杠替换单斜杠,但不要影响双斜杠。 我尝试了以下方法:
string oldPath = "\\new\new1\new2\";
string newPath = old.replace("\\", "\\\\");
我的预期结果是newPath
如下:
"\\new\\new1\\new2\\"
答案 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
方法的顺序非常重要。