2013-02-22 67 views
3

我有一個帶單引號的字符串。我想用2個單引號替換單引號。 我嘗試使用用另一個單引號替換字符串中的單引號

String s="Kathleen D'Souza"; 

s.replaceAll("'","''"); 

s.replaceAll("\'","\'\'"); 

s.replace("'","''"); 

s.replace("\'","\'\'"); 

但單引號是沒有得到與2個單引號代替。

+0

爲什麼?我總是非常懷疑這樣的問題。我通常會發現他們想做一些不需要做的事情。 – EJP 2013-02-22 09:13:17

+0

在休眠查詢中使用它之前,我需要轉義單引號。多數民衆贊成在原因是試圖取代2個單引號 – Vidya 2013-02-27 13:19:38

+1

@EJP這是一個非常合法的問題。轉義SQL查詢總是一件好事。在此之前,有人可以採用更好的技術來自動轉義,只能進行字符串替換。 OWASP前10名。 – Brain2000 2015-02-25 17:37:45

回答

0

Strings是不可變的。的replaceAll結果分配給您的String

s = s.replaceAll("'","''"); 
4

重新分配替換字符串s

String s="Kathleen D'Souza"; 
s = s.replaceAll("'","''"); 
0
String s="Kathleen D'Souza"; 
s= s.replace("'", "''"); 

嘗試字符串替換#()。它將取代所有出現的單雙''。

2

請嘗試 s =「test'test」;

`s.replaceAll("'","\"");`  => test " test 

`s.replaceAll("'","''");`  => test '' test 
0

注意事項,給定的解決方案連續單引號將增加一倍,所以凱瑟琳D'「索薩變成凱瑟琳·d」「」'索薩。 (我已經看到用戶像這樣智勝自己。)如果這是你關心的事情,你可以匹配連續單引號:

s = s.replaceAll("''*","''"); 
相關問題