2013-07-18 103 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); 
相关问题