2011-03-19 91 views
41

我正在從數據庫中檢索字段包含帶HTML數據的字符串的數據。我想要替換所有雙引號,以便它可用於parseJSON jQuery替換字符串中的所有雙引號

用java我試圖用更換報價..

details.replaceAll("\"","\\\""); 
    //details.replaceAll("\"","&quote;"); details.replaceAll("\"","&#34"); 

試過人lthis方式,但結果字符串不顯示的變化。 O'reily文章規定Article apache字符串utils。有沒有其他方法?

任何正則表達式或東西?

回答

76

下面是如何

String details = "Hello \"world\"!"; 
details = details.replace("\"","\\\""); 
System.out.println(details);    // Hello \"world\"! 

注意,字符串是immutable,因此它是不足夠簡單地做details.replace("\"","\\\"")。您必須將變量details重新分配給結果字符串。


使用

details = details.replaceAll("\"","&quote;"); 

代替,導致

Hello &quote;world&quote;! 
+7

+1 *字符串是不可改變*。 – 2011-03-19 12:24:00

+0

+1忘記字符串是不可變的:) – 2013-10-27 15:26:30

5

我認爲在這種情況下正則表達式有點矯枉過正。如果你只是想刪除您的字符串的所有報價,我會用這個代碼:

details = details.replace("\"", ""); 
4

,使其在JSON工作,你需要逃脫比這幾個字符。

myString.replace("\\", "\\\\") 
    .replace("\"", "\\\"") 
    .replace("\r", "\\r") 
    .replace("\n", "\\n") 

,如果你希望能夠使用json2.js來分析它,那麼你還需要逃避

.replace("\u2028", "\\u2028") 
    .replace("\u2029", "\\u2029") 

這JSON允許帶引號的字符串內,但JavaScript不。

+0

我正在使用jquery 1.5 ..我是否需要這一切? – MalTec 2011-03-19 12:36:33

+0

@MalTec,如果你的字符串可以包含反斜槓,那麼是的。考慮一下你的字符串是否是''\\'''',如果你用引號將它包裹起來,而且只能用引號括起來,那麼你就會得到''\\「」'這是一個無效的字符串。如果你的字符串可以包含換行符,那麼你也需要轉義它們。 JQuery中的字符串不允許換行符。 – 2011-03-19 13:25:20

24

那不是必須是:替換字符串

.replaceAll("\"","\\\\\"") 

FIVE反斜槓。

+4

是的,如果你要使用'replaceAll()',那將是正確的方法。這就是爲什麼大家都說要使用replace()代替。 ;) – 2011-12-06 02:57:23

+0

剛剛花了一個小時的好時間搞清楚爲什麼我的'replaceAll()'不工作。完全忘了還有'replace()'方法。 – Ben 2012-01-04 16:00:44

+3

爲什麼使用replace()而不是3反斜槓,而是使用replaceAll()反斜槓? – Ida 2013-06-23 02:32:46

3

我知道答案已經在這裏被接受,但我只是想分享當我試圖逃避雙引號和單引號時發現的內容。

這裏是我做了什麼:這個工程:)

逃脫雙引號

if(string.contains("\"")) { 
     string = string.replaceAll("\"", "\\\\\""); 
    } 

和逃避單引號

if(string.contains("\'")) { 
     string = string.replaceAll("\'", "\\\\'"); 
    } 

PS:請注意上面使用的反斜槓的數量。

2

這是刪除字符串中的雙引號。

str1 = str.replace(/"/g, ""); 
alert(str1); 
+0

OP想要Java的答案。 – 2015-05-18 15:50:55

0

以下的正則表達式將兩個工作:

text = text.replaceAll("('|\")", "\\\\$1");