我该如何转换:
从:
'\\x3c
'
到:
'<
';
我尝试了以下代码:
s=eval(s.replace("\\\\", ""));
无法工作。我该怎么做? 提前感谢!
我该如何转换:
从:
'\\x3c
'
到:
'<
';
我尝试了以下代码:
s=eval(s.replace("\\\\", ""));
使用String.fromCharCode
替代eval
,并且使用16进制的parseInt
:
s=String.fromCharCode(parseInt(s.substr(2), 16));
$('<div>').html('\x3c').text()
否则(摘自这里)function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
有一种方法可以做到这一点,但会招致那些认为"eval
"绝对是邪恶的人的愤怒,具体如下:
var s = "\\x3c";
var s2 = eval('"' + s + '"'); // => "<"
eval
是绝对有害的, 但我会说这不是 eval
的一个可接受的使用方式 (因为存在替代选项)。 - Andy EString.fromCharCode
是正确的方法,但是假设我们已经验证了输入(例如,确保它只能是转义字符引用),那么在这里使用eval
会有什么潜在的危害呢?对我来说,这似乎是少数几次可以使用eval
的情况之一。 - maericseval
不仅因为传递未经过处理的值存在安全风险而被避免使用,还因为它的性能较差。虽然 eval
本身很慢(因为它调用了 js 编译器),但它也会使周围的代码变慢。原因在于编译器通常会在解释代码时进行优化,但它无法知道 eval 表达式的结果,因此无法进行这样的优化。确实有一些情况下需要使用 eval
,但最终决定是否采用该方法取决于开发人员是否考虑了其他替代方案。 - Andy E
String.fromCharCode(+("0"+s.slice(1)));
。 - Andy EString.fromCharCode("0"+s.slice(1));
- Digital PlanefromCharCode
会为你转换成整数!呃! :-) - Andy E