2013-07-18 146 views
2

如何用反斜槓替換Java字符串中的空格字符?用反斜槓替換Java字符串中的空格

我嘗試這樣做:

String text = " 1 2 3 4 5 6 7 8 9 10"; 
text = text.replace(" ","\\"); 
System.out.println(text2); 

但在Eclipse中調試變量的結果一看:

text 1 2 3 4 5 6 7 8 9 10 
text2 \\1\\2\\3\\4\\5\\6\\7\\8\\9\\10 

,但在我的日誌結果是不同的:

07-18 14:56:31.049: I/System.out(9177): \1\2\3\4\5\6\7\8\9\10 

我想用smb命令來允許目錄文件名中的空格。這個命令在我的代碼中手動設置時有效。結果應該是這樣的:

source : smb://192.168.0.254/Disque dur/ 
text = text.replace(" ","\040"); 
result : smb://192.168.0.254/Disque\040dur/ 

但是,當我使用replace()方法有雙反斜線...

result : smb://192.168.0.254/Disque\\040dur/ 

07-18 15:15:10.439: E/Home(9538): jcifs.smb.SmbException: The network name cannot be found. 

感謝您的幫助

+0

刪除空間所以你要替換'\'所有的空格,'\\'或'\ 040'? –

回答

4

做這樣的:

String text = " 1 2 3 4 5 6 7 8 9 10"; 
text = text.replace(" ","\\\\"); 
System.out.println(text2); 

前面有反斜槓字符(\)是轉義序列和有特殊含義的編譯器。 '\\'此時在文本中插入一個反斜槓字符。

你可以在這裏閱讀更多:http://docs.oracle.com/javase/tutorial/java/data/characters.html

+1

這是爲什麼這樣工作?你能解釋爲什麼問題的代碼是這樣嗎? – pudelhund

+0

反斜槓是Java中的轉義字符。因此,如果要在Java文本中表示反斜槓,則必須使用雙反斜槓。 「\\」在java等於\ – JustinKSU

+1

它現在可以工作。替換(「」,「\ 040」); – Wildchild7

-2

在Java中,串「\」代表一個反斜槓。如果你想要雙反斜槓,你必須寫「\\」。

+2

根本不回答他的問題 –

+4

這是錯的 – Bohemian

+0

真的嗎?這裏還有其他幾個答案,說的是完全相同的東西。所以他們都錯了,值得下調? -.- –

2

反斜槓需要用Java逃脫。看到這個link

\\插入文本中的反斜槓性格

\\ - 代表\
\\\\ - 代表\\

不要讓控制檯愚弄你,你所看到的實際上只有一個\

0

你也可以像這樣

String mysz = " 1 2 3 4 5 6 7 8 9 10"; 
String mysz2 = mysz.replaceAll("\\s",""); 
System.out.println(""+mysz2); 
相關問題