Java 如何将字符串中的多个斜杠和反斜杠替换为单个斜杠?
我的目标是用一个“\”替换所有“/”和“\” 输入:Java 如何将字符串中的多个斜杠和反斜杠替换为单个斜杠?,java,regex,string,replace,replaceall,Java,Regex,String,Replace,Replaceall,我的目标是用一个“\”替换所有“/”和“\” 输入: String path = "H\\\\\\\\\\ello///Wo\\rld\\!////"; String path = "H\ello\Wo\rld\!\"; path = path.replace("\\", "/"); path = path.replaceAll("[/]+", "/"); pfad = pfad.replace("/", "\\"); 输出: String path = "H\\\\\\\\\\ello
String path = "H\\\\\\\\\\ello///Wo\\rld\\!////";
String path = "H\ello\Wo\rld\!\";
path = path.replace("\\", "/");
path = path.replaceAll("[/]+", "/");
pfad = pfad.replace("/", "\\");
输出:
String path = "H\\\\\\\\\\ello///Wo\\rld\\!////";
String path = "H\ello\Wo\rld\!\";
path = path.replace("\\", "/");
path = path.replaceAll("[/]+", "/");
pfad = pfad.replace("/", "\\");
问题:
String path = "H\\\\\\\\\\ello///Wo\\rld\\!////";
String path = "H\ello\Wo\rld\!\";
path = path.replace("\\", "/");
path = path.replaceAll("[/]+", "/");
pfad = pfad.replace("/", "\\");
有没有一种方法可以在一行中完成这一切
我的解决方案(有效!):
String path = "H\\\\\\\\\\ello///Wo\\rld\\!////";
String path = "H\ello\Wo\rld\!\";
path = path.replace("\\", "/");
path = path.replaceAll("[/]+", "/");
pfad = pfad.replace("/", "\\");
尝试此模式以匹配斜杠和反斜杠组:
(?:\\+\\/+)
,并将其替换为\
说明:
(?:…)
-非捕获组
\\+
-匹配一个或多个\
\/+
-匹配一个或多个/
|
-交替:匹配右侧或左侧的图案
或者,您可以使用模式[\/\]+
,该模式匹配一个或多个\
或/
使用
.replaceAll("[\\\\/]+", "\\\\")
请参见正则表达式图:
[\\/]+
模式匹配\
或/
一次或多次。替换模式是\\
,因为替换模式中的反斜杠在Java中是特殊的,它用于转义表示文本$
字符的$
符号。要匹配文字反斜杠,您需要
见:
很抱歉,您必须在这里逐个遍历字符。为什么要将
\
替换为\
?这不会改变任何事情。你可能想用单个的\
替换一系列的\
和/
吗?是的,这就是我的目标@pshemetry.replaceAll(“[\\\/]+”,“\\\\”)
如果所有由一个或多个\
和/
字符组成的区块都应替换为一个\
。替换\\\/
的结果是什么?应该是一个\
还是两个\\
(一个用于\\\\\
序列,第二个用于/
序列)?如果前后斜杠混合使用,这将不起作用。例如,H\\\//\\\ello///Wo\\rld\/\//代码>。不过,对于OP来说,它可能已经足够好了;)@SamWhan这就是为什么我包含了在您的场景中有效的替代方案:)简单地[\\\/]+
是sufficient@Strelok这就是为什么我还建议它不需要转义/
字符,它在正则表达式中没有任何特殊之处。