【问题标题】:Replace backslash with double backslash [duplicate]用双反斜杠替换反斜杠[重复]
【发布时间】:2013-02-23 13:36:05
【问题描述】:

我想将字符串中的反斜杠改为双反斜杠。

我有

String path = "C:\Program Files\Text.txt";

我想把它改成

"C:\\Program Files\\Text.txt"

【问题讨论】:

  • 不是说语法错误吗?
  • 始终使用 / 而不是 \\ 作为文件系统路径,因为 / 与操作系统无关。
  • 你没有 (1),因为它不能编译:因此你没有将它转换为 (2) 的问题。您可能拥有的是一个包含单个反斜杠的字符串,它不是来自文字,而是来自用户,它已经可以使用了。双反斜杠仅对字符串文字是必需的,编译器会将它们转换为单反斜杠。你没有这个问题。不是一个真正的问题。

标签: java string


【解决方案1】:

replaceAll 正在使用正则表达式,由于您在这里不需要使用正则表达式,只需使用

path = path.replace("\\", "\\\\");

\ 在字符串文字中是特殊的。例如,它可以用于

  • 创建特殊字符,如制表符\t,行分隔符\n\r
  • 或使用\uXXXX 之类的符号编写字符(其中X 是十六进制值,XXXX 表示字符在Unicode 表中的位置)。

要转义它(并创建\ 字符),我们需要在它之前添加另一个\
所以表示\ 字符的字符串文字看起来像"\\"。代表两个\ 字符的字符串看起来像"\\\\"

【讨论】:

    【解决方案2】:

    使用String#replace()

    String s= "C:\\Program Files\\Text.text";
    System.out.println(s.replace("\\", "\\\\"));
    

    【讨论】:

    • 我收到错误为“线程中的异常“AWT-EventQueue-0”java.util.regex.PatternSyntaxException:索引 1 附近出现意外内部错误”
    • @user2060390 您可能正在使用replaceAll。您在这里并不需要正则表达式解决方案,只需使用 replace() 即可,它需要一个字符串和一个替换字符串。
    • 如果您想使用replaceAllSystem.out.println(s.replaceAll("\\\\", "\\\\\\\\")); 会起作用。
    • 如果你想使用 replaceAll 试试这个:'System.out.println(s.replaceAll("\\\\", "\\\\\\\\"));'但是我强烈建议在这种情况下使用非正则表达式 String#replace 解决方案。 :)
    • 我正在使用“Paths.get(selfile)”获取文件的路径,并将其作为“PDDOcument.load(input)”的输入传递。
    猜你喜欢
    • 1970-01-01
    • 2018-10-16
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多