2015-02-23 156 views
2

我是Java的新手,正在尋找優化的代碼來查找某些字符並將其替換爲另一個字符。查找並替換字符串中的字符

可能的字符串,我可以得到的是,

ABC-2233JDK_KD&ERF 
[email protected]_344GG 
XYZ-99848^KDF_FDFG 

字符串中允許的字符是字母數字和「 - 」和「_」比這些需要其他

什麼要被替換「 - 」

因此,例如,從上面的1弦將成爲,

ABC-2233JDK_KD-ERF 

我想出了一個RegEx來查找字符串,而不是允許的字符。

^[a-zA-Z0-9_-]+\$ 

有沒有簡單的方法來替換Java中的字符串中的無效字符?

這裏的無效字符不是字母數字,破折號(「 - 」)和下劃線(「_」)以外的任何字符。

+1

這個問題已經在這裏回答了。看看: http://stackoverflow.com/questions/15249047/remove-all-characters-from-string-which-are-not-on-whitelist – woltob 2015-02-23 21:47:13

+0

你已經把'^'放在字符類外,並且尾隨的'\ $'應該被刪除。否則,你的正則表達式就OK了。 – 2015-02-23 21:49:10

回答

3

你可以使用:

String repl = input.replaceAll("[^\\w-]+", ""); 

^否定整個字符類和\w包括[a-zA-Z0-9_],我們在這裏混加連字符按您的要求。