我需要在Javascript中使用unescape字符串,但我的字符串有时已经没有转义,有时则不是:
// String 1
<?xml version="1.0" encoding="UTF-8" ?>
// String 2
<?xml version="1.0" encoding="UTF-8"?>
我使用以下方法:
function htmlDecode(input)
{
var doc = new DOMParser().parseFromString(input, "text/html");
return doc.documentElement.textContent;
}
但问题是当我“解码”字符串2时,答案出现为?xml version="1.0" encoding="UTF-8"?
非常感谢帮助。
答案 0 :(得分:1)
您可以对字符串执行正则表达式检查,以查看字符的编码版本是否存在。如果它们确实存在,那么进行解码,否则,只需返回您交给函数的内容。
var string1 = '<?xml version="1.0" encoding="UTF-8"?>';
var string2 = '<?xml version="1.0" encoding="UTF-8"?>';
function decode(input) {
if (/&|"|'|'<|>/.test(input)) {
var doc = new DOMParser().parseFromString(input, "text/html");
return doc.documentElement.textContent;
}
return input;
}
console.log(decode(string1));
console.log(decode(string2))
此方法不需要正则表达式,并且将始终返回未转义的字符串而不会“过度使用”它们:
var string1 = '<?xml version="1.0" encoding="UTF-8"?>';
var string2 = '<?xml version="1.0" encoding="UTF-8"?>';
function decode(input) {
var txt = document.createElement("textarea");
txt.innerHTML = input;
return txt.value;
}
console.log(decode(string1));
console.log(decode(string2))