如何在Java中将\替换为/?

3
我尝试使用以下正则表达式,但它没有起作用。
myString.replaceAll("\", "/");
异常:
java.util.regex.PatternSyntaxException: 在索引1附近出现意外的内部错误 \ ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source)

1
要将文件路径转换为Unix分隔符,您可以查看Apache Common-IO http://commons.apache.org/io/api-1.4/org/apache/commons/io/FilenameUtils.html#separatorsToUnix%28java.lang.String%29。 - gigadot
2个回答

8

你的代码甚至不应该编译通过。

"\" 转义了 ",使得字符串可以继续。写成 String h = "\"hello\""; 会使得字符串 h 包含 "hello"

如果我们将其改为 "\\"(转义反斜杠),就会遇到另一个问题。正则表达式随后会尝试转义下一个字符。例如,写成 "\\d+" 是一个有效的正则表达式(匹配数字)。


然而,在你的情况下,你根本不需要正则表达式。只需使用字符串的 replace(char, char) 方法,它可以替换所有字符。

myString.replace('\\', '/');

顺便提一下,如果您正在替换路径,应该查看File.separator以获取系统的路径分隔符字符。

3
到目前为止这是最好的答案(+1)。仅在需要时使用正则表达式。在80%的情况下,应该使用String.replace(char, char)String.replace(CharSequence, CharSequence)而不是使用String.replaceAll()。请注意不要改变原意。 - Sean Patrick Floyd

3
有时需要4个斜杠,因为反斜杠也是正则表达式的转义字符。请尝试:
myString.replaceAll("\\\\", "/");

这是正确的,但它解决了错误的问题(请参见dacwe的答案)。 - Sean Patrick Floyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接