如何更换' n'用一个反斜杠(\)?

时间:2016-07-27 14:27:14

标签: java regex replace

我想挤出' n'斜线数为1,其中n不固定。

例如:

String path = "Report\\\\\\n"; 

预期输出:"Report\\n"

我尝试了以下方式

System.out.println(path.replaceAll("\\+", "\");

但它正在打印"Report\\\n"

我无法减少更多。

所有相关的问题/答案都与固定数量的斜杠有关。

是否有任何通用方法可以将所有反斜杠压缩为一个?

5 个答案:

答案 0 :(得分:5)

如果您打印path,则会获得:

Report\\\n

那是因为\应该被引用,并且它在Java中被写为\\

你应该这样做:

System.out.println(path.replaceAll("\\\\+", "\\\\"));

说明:

在(纯)正则表达式中,为了匹配文字 \,你应该引用它。所以它表示为:

\\

在Java中,\表示为\\,简单数学应该解释4 \

答案 1 :(得分:1)

你必须逃脱。很多。

System.out.println("Report\\\\\\n");
System.out.println("Report\\\\\\n".replaceAll("[\\\\]+", "\\\\"));

打印出来:

Report\\\n
Report\n

答案 2 :(得分:0)

您可以使用两个方法indexOf()和lastIndexOf()来获取字符串' \\ ....'的实际开始和结束索引。 然后使用substring方法获取子字符串。

答案 3 :(得分:0)

你只需要" \"的第一个和最后一个位置。在String中。然后创建一个没有这些位置之间信息的字符串。

int firstIndex = path.indexOf("\\");
int lastIndex = path.lastIndexOf("\\");
String result = path.substring(0, firstIndex) + path.substring(lastIndex, path.length());

答案 4 :(得分:-1)

要使用单个正斜杠替换多个正斜杠,您可以使用:

.replaceAll("(?)[//]+", "/"); 

要使用单个反斜杠替换多个反斜杠,可以使用:

.replaceAll("(?)[\\\\]+", "\\\\");