2011-09-23 74 views
7

我试图将字符串拆分为数组,并用\\替换\,但无法做到这一点,我也尝试了String.replaceAll这样的东西("\","\\");。我想提供一个JNI的路径,它只能以这种方式读取。请有人可以帮助我。谢谢。如何在java中用“\”替换“\”

回答

22

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

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

注意,反斜杠加倍由于Java字符串字面量是 - 所以这里涉及到的实际字符串是“单反斜线”和“双反斜线” - 不是翻一番,翻两番。

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

+7

该死!再次重温! –

+0

这会给我增加4个斜线\\\\对我来说 –

+0

@Jamesandresakis:很难告诉你这些信息很少有什么问题。我的猜测是,你正在查看调试器中的字符串,它可能会为你逃脱。 –

1

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

这是不对的。在编程语言中声明的字符串中只需要双反斜杠。您无需在运行时进行这种替换。你需要重新思考你为什么这样做。

2

你可以使用replaceAll

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

p_p我明白为什么Jon Skeet说不要使用replaceAll ...哦Java ... – yarbelk