我试图将字符串分解为数组并替换\
为\\
,但做不到,我也尝试了 String.replaceAll 之类的东西("\","\\");
。
我想提供一条到 JNI 的路径,它只能以这种方式读取。
在这种情况下不要使用String.replaceAll
- 这是根据正则表达式指定的,这意味着您需要更多的转义。这应该没问题:
String escaped = original.replace("\\", "\\\\");
请注意,由于在 Java 字符串文字中,反斜杠加倍 - 所以这里涉及的实际字符串是“单反斜杠”和“双反斜杠” - 不是双倍和四倍。
replace
适用于简单的字符串 - 不涉及正则表达式。
你可以使用replaceAll
:
String escaped = original.replaceAll("\\\\", "\\\\\\\\");
我想提供一条到 JNI 的路径,它只能以这种方式读取。
那是不对的。您只需要在以编程语言声明的文字字符串中使用双反斜杠。您永远不必在运行时执行此替换。你需要重新考虑为什么要这样做。
处理“\”可能是一次冒险,因为它在 Java 中被视为转义字符。您总是需要在字符串中使用“\”和“\”。但是当您想在正则表达式中使用“\”时,乐趣就开始了,因为“\”也是正则表达式中的转义字符。因此,对于单个“\”,您需要在正则表达式中使用“\\”。
这是我找到此信息的链接:https ://www.rgagnon.com/javadetails/java-0476.html
我不得不将'\'转换为'\\'。我找到了我们可以使用的地方:
filepathtext = filepathtext.replace("\\","\\\\");
它有效。下面给出了我如何实现它的图像。