【问题标题】:How to replace " \ " with " \\ " in java如何在java中将“\”替换为“\\”
【发布时间】:2011-09-23 22:02:58
【问题描述】:

我尝试将字符串分解为数组并将 \ 替换为 \\ ,但做不到,我还尝试了 String.replaceAll 类似 ("\","\\"); 的东西。

我想提供一条到 JNI 的路径,它只能以这种方式读取。

【问题讨论】:

    标签: java regex string backslash


    【解决方案1】:

    在这种情况下不要使用String.replaceAll - 这是根据正则表达式指定的,这意味着您需要更多的转义。这应该没问题:

    String escaped = original.replace("\\", "\\\\");
    

    请注意,由于在 Java 字符串文字中,反斜杠会加倍 - 所以这里涉及的 实际 字符串是“单反斜杠”和“双反斜杠” - 不是双反斜杠和四重反斜杠。

    replace 适用于简单字符串 - 不涉及正则表达式。

    【讨论】:

    • 这为我添加了四个像 \\\\ 这样的斜线
    • @Jamesandresakis:用这么少的信息很难判断你做错了什么。我的猜测是您正在调试器中查看字符串,它可能会为您转义。
    【解决方案2】:

    你可以使用replaceAll:

    String escaped = original.replaceAll("\\\\", "\\\\\\\\");
    

    【讨论】:

      【解决方案3】:

      我想提供一条到 JNI 的路径,它只能以这种方式读取。

      这是不对的。您只需要在以编程语言声明的文字字符串中使用双反斜杠。您永远不必在运行时执行此替换。您需要重新考虑为什么要这样做。

      【讨论】:

        【解决方案4】:

        处理“\”可能是一件很冒险的事,因为它在 Java 中被视为转义字符。您总是需要在字符串中使用“\”和“\”。但是当您想在正则表达式中使用“\”时,乐趣就开始了,因为“\”也是正则表达式中的转义字符。因此,对于单个“\”,您需要在正则表达式中使用“\\”。

        这是我找到此信息的链接:https://www.rgagnon.com/javadetails/java-0476.html

        我必须将 '\' 转换为 '\\'。我找到了我们可以使用的地方:

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

        它有效。 下面给出的是我如何实现它的图像。

        https://i.stack.imgur.com/LVjk6.png

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-15
          • 1970-01-01
          • 2015-01-14
          • 2012-09-30
          • 1970-01-01
          • 1970-01-01
          • 2020-12-30
          • 2018-09-16
          相关资源
          最近更新 更多