2009-05-04 138 views
2

我有這個字符串:"\"Blah \'Blah\' Blah\""。裏面還有另一個字符串。我如何將其轉換爲:Blah 'Blah' Blah? (你看,進行反向轉義的字符串)。這是因爲我得到一個SQL WHERE查詢:(還在裏面引號和轉義)字符串內部的Java字符串到字符串

WHERE blah="Blah \'Blah\' Blah" 

當我分析,我得到上面的字符串我將如何提取,避開字符串?還是有一些更簡單的方法來做到這一點?謝謝,
艾薩克

+0

您是在字符串中構建sql where子句,還是使用參數化查詢? – codeulike 2009-05-04 23:59:10

+8

Yo dawg,我聽說你喜歡字符串,所以我們在你的字符串中放置了一個字符串,這樣你就可以在你解析的時候解析 – 2009-05-05 00:02:13

+1

你是否想要避免雙引號(它們在你的例子的開頭和結尾)或者只是單引號(在中間)。此外,您使用的是什麼類型的SQL,因爲您可能需要重新轉義SQL的引號。 – codeulike 2009-05-05 00:12:29

回答

17

不要這樣做。

按照適當的步驟對數據庫/平臺上的查詢進行參數化,您不必轉義任何東西。您也將保護自己免受注射漏洞的侵害。

+0

+1,但我將如何破解網站。 ;( – cgp 2009-05-05 00:30:34

+2

不,你看,我不是創建SQL查詢的人,解析它是我的工作,我有一個到Web服務的SQL接口,並且我完成了參數化部分,但對於那些誰不喜歡,不好的方式,我不得不支持它,我想我可以拋出一個異常,但我想完全支持它 – 2009-05-05 00:33:17

+0

然後你的Web服務接口壞了,它應該是查詢和查詢參數作爲單獨的項目 – FlySwat 2009-05-05 00:42:33

-1
"\"Blah \'Blah\' Blah\"".replaceAll("\"", "") 
+1

如果字符串是「\」Blah \\「Blah \\」Blah \「」,它會出錯:Blah \ Blah \ Blah。 – 2009-05-05 00:03:02

0

把字符串中的屬性文件,Java支持XML屬性文件和引號字符並不需要在XML中進行轉義。

使用Properties類的loadFromXML(InputStream in)方法。

然後,您可以使用MessageFormat類將值插入到字符串中(如果需要)。

0

這應該是正確的。這假定如果它以報價開始,則以報價結束。

if (val.startsWith("\"") || val.startsWith("\'")) 
    val = val.substring(1, val.length-2); 

您也可以添加val = val.trim();