Я думаю, что вы можете использовать функции из вопроса на несколько иную тему ( Эффективно заменить все акцентированные символы в строке? ).
В ответе Джейсона Бантинга есть несколько хороших идей + необходимое объяснение, вот его решение с некоторыми изменениями, чтобы вы начали (, если вы находите это полезным, добавьте также его первоначальный ответ, поскольку это его код, по существу ).
var replaceHtmlEntites = (function() {
var translate_re = /&(nbsp|amp|quot|lt|gt);/g,
translate = {
'nbsp': String.fromCharCode(160),
'amp' : '&',
'quot': '"',
'lt' : '<',
'gt' : '>'
},
translator = function($0, $1) {
return translate[$1];
};
return function(s) {
return s.replace(translate_re, translator);
};
})();
вызывается как
var stringToMatch = "This string has special chars & and &nbsp;";
var stringOutput = replaceHtmlEntites(stringToMatch);
Нумерованные энтиты еще проще, вы можете заменить их гораздо более широко, используя небольшую математику и String.fromCharCode()
.
Другая, гораздо более простая возможность была бы такой (работает в любом браузере)
function replaceHtmlEntites(string) {
var div = document.createElement("div");
div.innerHTML = string;
return div.textContent || div.innerText;
}
replaceHtmlEntites("This string has special chars < & >");
// -> "This string has special chars < & >"