2011-03-24 64 views
0
\

我怎樣才能避免字符串中的雙引號? 對於例如,java:用「」替換「」

input: "Nobody" 
output: \"Nobody\" 

我試過某事像這樣,這是行不通的:

String name = "Nobody"; 
name.replaceAll("\"", "\\\""); 
+1

以何種方式是不工作?請記住,在'String name =「Nobody」中,雙引號實際上並不是字符串的一部分,它們只是分隔符。 – NPE 2011-03-24 10:25:16

+0

對不起,我的道歉:字符串是這樣的:String name =「」Nobody「」; – Arjun 2011-03-24 10:28:27

+0

這不是正確的語法,我懷疑你的意思是'String name =「\」Nobody \「」;',這會導致輸出「Nobody」。 – Thomas 2011-03-24 10:31:44

回答

6

因爲你的字符串「沒有人」沒有在任何雙引號!

String name = "Nobo\"dy"; 
    name = name.replaceAll("\"", "\\\\\""); 

    System.out.println(name); 
  1. 您的字符串沒有雙引號
  2. 你沒有重新分配的名稱(記住,字符串在Java中是不可變的)
  3. 你的正則表達式是不完全正確的。

此外,您不需要使用RegEx進行這種簡單替換。

試試看

name = name.replace("\"", "\\\""); 
+0

對不起,我的道歉:字符串是這樣的:String name =「」Nobody「」; – Arjun 2011-03-24 10:28:49

5

adarshr是正確的,而且,你是忽略了返回的字符串的通知,像這樣做:

String name = "Nobody"; 
name = name.replaceAll("\"", "\\\""); 

字符串在Java是imutable

編輯:自從我寫這篇文章以來,adarshr已經將他的答案改變得更好了(如果有人想知道我爲什麼寫這個)

0

name.replaceAll(...)不會更改的名字 - 它返回字符串,所以你需要寫:

name = name.replaceAll(...) 

JavaDoc

除此之外您的字符串不包含「