我想挤出' n'斜线数为1,其中n不固定。
例如:
String path = "Report\\\\\\n";
预期输出:"Report\\n"
我尝试了以下方式
System.out.println(path.replaceAll("\\+", "\");
但它正在打印"Report\\\n"
我无法减少更多。
所有相关的问题/答案都与固定数量的斜杠有关。
是否有任何通用方法可以将所有反斜杠压缩为一个?
答案 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("(?)[\\\\]+", "\\\\");