我有一些字符串,其中重音字符以十六进制编码,如下所示:
extrémité>抽\X2\00
的 E9 \X0\
{MIT {1}}的 E9 \X2\00
所以我打算用\X0\
(charcode)替换\X2\00
(字符代码) \X0\
但我不能写\X
:
'\x'
我该怎么做?
这既不起作用:
out.replace(/\X2\00/g,'\x');
这是一个解析器,这是一个文件行:
out.replace(/2\00/g,'');
答案 0 :(得分:3)
您需要在JavaScript正则表达式和字符串中转义反斜杠。
根据您的评论,我了解您的源数据(在文件中)如下所示:
\X2\00E9\X0\
请注意,如果要重现此数据(用于测试),则需要在控制台中转义这些反斜杠。在JavaScript表示法中,上述数据表示为'\\X2\\00E9\\X0\\'
。
另外,要生成重音字母,您可以使用charFromCode()
,并使用带有回调函数的replace()
:
// note that in JS strings, backslashes need to be escaped to get
// the text as it appears in your file. This is just to mimic the file input
var str = 'extr\\X2\\00E9\\X0\\mit\\X2\\00E9\\X0\\';
// .. and also in JS regexes, the backslashes need to be escaped.
str = str.replace(/\\X2\\00(..)\\X0\\/g, function(_, match) {
// match is now the two letter hex code, convert to number and then
// to character, and return it as replacement
return String.fromCharCode(parseInt(match,16));
});
document.write(str);