【问题标题】:How can I replace \ with / in Java?如何在 Java 中用 / 替换 \?
【发布时间】:2010-12-28 06:27:11
【问题描述】:

我尝试了以下正则表达式,但没有成功。

myString.replaceAll("\", "/");

例外:

java.util.regex.PatternSyntaxException: 索引 1 附近出现意外内部错误 \ ^ 在 java.util.regex.Pattern.error(未知 来源)在 java.util.regex.Pattern.compile(未知 来源)在 java.util.regex.Pattern.(未知 来源)在 java.util.regex.Pattern.compile(未知 来源)在 java.lang.String.replaceAll(未知 来源)

【问题讨论】:

标签: java regex


【解决方案1】:

您的代码甚至不应该编译。

"\" 转义 " 以便字符串继续。写入String h = "\"hello\""; 会使字符串h 包含"hello"

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


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

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

顺便说一句,如果要替换路径,则应查看File.separator 以获取系统路径分隔符

【讨论】:

  • 这是迄今为止最好的答案 (+1)。当且仅当您需要正则表达式时才使用它们。 String.replace(char, char)String.replace(CharSequence, CharSequence) 应该在人们使用 String.replaceAll() 的 80% 的情况下使用。
【解决方案2】:

有时您需要 4 个斜杠,因为反斜杠也是正则表达式的转义字符。试试看

myString.replaceAll("\\\\", "/");

【讨论】:

  • 这是真的,但它解决了错误的问题(见 dacwe 的回答)。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 2020-07-13
相关资源
最近更新 更多