取消转义 JavaScript 中的转义字符串
Unescape an escaped string in JavaScript
我是 运行 一个显示特定 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 中有没有对转义序列进行转义以强制它显示字符?
为此,您需要使用 String.fromCharCode()
var es = '';
for (var i = 0; i < 9999; ++i) {
es = String.fromCharCode(i);
// ...
}
\uNNNN
语法仅适用于较大字符串常量内的常量值。
edit — 下面的重要评论指出,由于 JavaScript 字符串的 UTF-16 实现存在问题,.fromCharCode()
与外部字符存在问题基本多语言平面。为此,ES6 (ES2015) 有 String.fromCodePoint()
,一个类似于 do 处理 16 位范围之外的 "astral" 字符的功能。 More on that here并在评论中link。
我遇到了来自 REST 端点的 JSON 响应的类似问题,这解决了这个问题:
JSON.parse('"' + string + '"')
对于任何偶然发现这个问题的人(很可能是我未来的自己)想要“逃脱”之前逃脱的 Javascript special characters,这里有一个 hacky 的方法:
newString = JSON.stringify(string).slice(1,-1)
不过这似乎只适用于某些字符,例如 \t
、\n
、\r
、\f
、\b
、\
,等等
为了更好地解释自己,在制表符的情况下,这会将制表符转换回 literal/raw 字符串,即 \t
.
我是 运行 一个显示特定 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 中有没有对转义序列进行转义以强制它显示字符?
为此,您需要使用 String.fromCharCode()
var es = '';
for (var i = 0; i < 9999; ++i) {
es = String.fromCharCode(i);
// ...
}
\uNNNN
语法仅适用于较大字符串常量内的常量值。
edit — 下面的重要评论指出,由于 JavaScript 字符串的 UTF-16 实现存在问题,.fromCharCode()
与外部字符存在问题基本多语言平面。为此,ES6 (ES2015) 有 String.fromCodePoint()
,一个类似于 do 处理 16 位范围之外的 "astral" 字符的功能。 More on that here并在评论中link。
我遇到了来自 REST 端点的 JSON 响应的类似问题,这解决了这个问题:
JSON.parse('"' + string + '"')
对于任何偶然发现这个问题的人(很可能是我未来的自己)想要“逃脱”之前逃脱的 Javascript special characters,这里有一个 hacky 的方法:
newString = JSON.stringify(string).slice(1,-1)
不过这似乎只适用于某些字符,例如 \t
、\n
、\r
、\f
、\b
、\
,等等
为了更好地解释自己,在制表符的情况下,这会将制表符转换回 literal/raw 字符串,即 \t
.