2011-09-23 72 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