3
4

1 回答 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 回答