2012-04-25 30 views
0

0x20下的字符未顯示,因此我想將它們轉義爲'\ x0D',例如。Javascript替換字符與32下的字符 x(charcode)

目前,我使用的是:

str = str.replace(/([\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f])/,function(b){ 
        var b = b.charCodeAt(); 
        return '\\x'+(b<16?'0':'')+b.toString(16).toUpperCase(); 
       }); 

有沒有更好的辦法?本來,我是這樣做的:

str = escape(str).replace('%(\d\d)','\\x$1'); 

..但它轉義字符值高於32

回答

2

範圍。

/[\x00-\x1f]/ 

還要注意我刪除了括號 - 使用$&得到整個模式,而不是$1