2013-10-16 109 views
0

之間ASCII值替換字符串我想換成含有除了從這些2個範圍不希望的ASCII字符的字符串(在hex):2個範圍(或)

x20-x7ex80-x9a

如何編寫正確的正則表達式,以便它將替換不在20-7e80-9a之間的所有字符?

我嘗試這樣做:

String fixed = value_.replaceAll("[^(\\x20-\\x7e|\\x80-\\x9a)]", ""); 

但它沒有不工作。 更新: 我得到的字符串只包含x20-x7e之間的字符,其他所有字符包括 x80-x9a都被替換。

我該如何使用或在這兩個範圍之間?

+0

你是什麼意思沒有工作?你會得到什麼輸出? –

+0

@Rohit Jain:我已經更新了我得到的結果。 – user2046810

+0

由於問題是與字符> = 0x80,這可能是由於一個ASCII與Uni​​code snafu? – Smallhacker

回答

1

爲什麼不乾脆:

String fixed = value_.replaceAll("[^\\x20-\\x7e\\x80-\\x9a]", ""); 
0

修復你的正則表達式的語法,並使用或者使用Unicode \unnnn

String fixed = value_.replaceAll("[^\u0020-\u007e\u0080-\u009a]", ""); 

或八進制\nnn

String fixed = value_.replaceAll("[^\40-\176\200-\232]", ""); 

FYI雖然統一需要所有四位數字,八進制只需要多少。

+0

我測試了代碼,它適用於我。請發佈您的輸入字符串。 – Bohemian