我的目标是用一个“ \”替换所有“ /”和“ \”。
输入:
String path = "H\\\\\\\\\\ello///Wo\\rld\\!////";
输出:
String path = "H\ello\Wo\rld\!\";
问题:
有没有办法在一行中完成全部操作?
我的解决方案(有效!):
我了解到我需要正则表达式,并且“ [X] +”将放置所有可能的组合,例如。 “ XXfXfXXXX”到“ XfXfX”。
我正在搜索类似:(伪代码)
path = path.replaceAll("[\\/]+", "\\");
我尝试了一些组合,但是每次都抛出错误。
我的解决方案:
path = path.replace("\\", "/");
path = path.replaceAll("[/]+", "/");
pfad = pfad.replace("/", "\\");
答案 0 :(得分:4)
请尝试以下模式以匹配斜杠和反斜杠组:(?:\\+|\/+)
并将其替换为\\
。
说明:
(?:...)
-非捕获组
\\+
-匹配一个或多个\
\/+
-匹配一个或多个/
|
-交替:右侧或左侧的匹配模式
或者,您可以使用模式[\/\\]+
,该模式匹配\
或/
的一个或多个
答案 1 :(得分:1)
使用
.replaceAll("[\\\\/]+", "\\\\")
查看正则表达式图:
[\\/]+
模式匹配\
或/
一次或多次。替换模式为\\
,因为替换模式中的反斜杠在Java中是 special ,因此它用于转义表示文字$
字符的$
符号。要匹配文字反斜杠,您需要use four \
in the regex string literal。
请参见Java demo online:
String path = "H\\\\\\\\\\ello///Wo\\rld\\!////";
System.out.println(path.replaceAll("[\\\\/]+", "\\\\"));
// => H\ello\Wo\rld\!\