问问题
1905 次
1 回答
2
而不是特定实体的代码,一个替换原始 7 位 ASCII 范围之外的任何内容的代码怎么样:
str = str.replace(/[^\011\012\015\040-\177]/g, function(x) {
return '&#' + x.charCodeAt(0) + ';'
})
(正则表达式匹配任何不是空格或“普通”ASCII 字符的内容)
或者,编写您的地图,以便键是您要替换的字符,值是实体:
var map = { '£' : '£' }
str = str.replace(/./g, function(x) {
return (x in map) ? map[x] : x;
});
请注意,这两个版本都只调用一次正则表达式,而不是为集合中的每个可能实体调用一次。这应该使代码比基于循环的方法快一些。
于 2012-06-20T11:34:08.247 回答