我正在运行一个循环来显示特定Unicode转义序列的字符。
var es = '';
for (var i = 0; i <= 9999; i++) {
if (i < 10) {
es = '\\u000' + i;
} else if (i < 100) {
es = '\\u00' + i;
} else {
es = '\\u' + i;
}
console.log(es);
}
...但是,它不会显示字符,只显示序列。在JavaScript中是否存在转义转义序列以强制它显示字符?
答案 0 :(得分:1)
为此,您需要使用String.fromCharCode()
var es = '';
for (var i = 0; i < 9999; ++i) {
es = String.fromCharCode(i);
// ...
}
\uNNNN
语法仅适用于较大字符串常量内的常量值。
编辑 - 下面的重要评论指出,由于JavaScript字符串的UTF-16实现存在问题,.fromCharCode()
在基本多语言平面之外的字符存在问题。为此,ES6(ES2015)具有String.fromCodePoint()
,类似于处理处理16位范围之外的“星体”字符的功能。 More on that here以及评论中的链接。
答案 1 :(得分:0)
我遇到类似的问题,来自REST端点的JSON响应,这就解决了这个问题:
JSON.parse('"' + es + '"')
答案 2 :(得分:0)
对于那些在这个问题上绊倒的人(很可能是我未来的自己)希望“摆脱”以前逃脱的 Javascript special characters,这里有一个黑客的方法:
newString = JSON.stringify(string).slice(1,-1)
不过这似乎只对某些字符有效,例如 \t
、\n
、\r
、\f
、\b
、\\
、等
为了更好地解释自己,在制表符的情况下,这会将制表符转换回文字/原始字符串,即 \t
。