来自 underscore.js 的 unescape() 函数不工作
unescape() function from underscore.js not working
我需要解码 html 个实体,例如:&
、<
、>
、"
、`
和 '
.
按照此 SO post, I was trying to use _.unescape()
from underscore.js 中对此任务的建议。
不过,unescape()
好像没有什么作用。当我称之为例如在以下字符串中,它只是 returns 字符串本身:
const line = 'Tweag I/O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'
要验证,您可以转到 JSBin 并粘贴以下代码:
const line = 'Tweag I/O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'
console.log(line)
const decodedLine = unescape(line)
console.log(decodedLine)
不要忘记添加 underscore.js
库,方法是从点击 Add library
按钮时出现的下拉列表中选择它。
更新
如@DanPrince 的回答所述,unescape()
仅解码一组有限的字符:
&
、<
、>
、"
、`
、'
但是,将我的行从上面的示例更改为以下示例仍然不起作用(即使这次我使用 '
和 &
):
const line = `'Tweag I'O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'`
最终更新
我使用不同的库解决了我的问题。我现在使用的是 he,而不是 underscore.js
,它完全 提供了我正在寻找的功能。
现在,我只需调用 decode(line)
和 all html 实体即可正确翻译。不过,我会跟进这个问题的答案,并接受解释为什么 unescape()
无法按预期工作的答案。
看下划线the source,一切都是通过以下映射翻译的。
var escapeMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'`': '`'
};
var unescapeMap = _.invert(escapeMap);
字符串中的两个转义实体是 /
和 &
,它们都没有出现在转义图中。您可以通过添加分号来修复 &
。
虽然效率不是特别高,但您可以使用 answer suggested here。
此外,当我在 jsbin 中使用 _.unescape
时,我得到了预期的行为,而我认为您的代码使用了本机 unescape
函数。
我需要解码 html 个实体,例如:&
、<
、>
、"
、`
和 '
.
按照此 SO post, I was trying to use _.unescape()
from underscore.js 中对此任务的建议。
不过,unescape()
好像没有什么作用。当我称之为例如在以下字符串中,它只是 returns 字符串本身:
const line = 'Tweag I/O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'
要验证,您可以转到 JSBin 并粘贴以下代码:
const line = 'Tweag I/O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'
console.log(line)
const decodedLine = unescape(line)
console.log(decodedLine)
不要忘记添加 underscore.js
库,方法是从点击 Add library
按钮时出现的下拉列表中选择它。
更新
如@DanPrince 的回答所述,unescape()
仅解码一组有限的字符:
&
、<
、>
、"
、`
、'
但是,将我的行从上面的示例更改为以下示例仍然不起作用(即使这次我使用 '
和 &
):
const line = `'Tweag I'O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'`
最终更新
我使用不同的库解决了我的问题。我现在使用的是 he,而不是 underscore.js
,它完全 提供了我正在寻找的功能。
现在,我只需调用 decode(line)
和 all html 实体即可正确翻译。不过,我会跟进这个问题的答案,并接受解释为什么 unescape()
无法按预期工作的答案。
看下划线the source,一切都是通过以下映射翻译的。
var escapeMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'`': '`'
};
var unescapeMap = _.invert(escapeMap);
字符串中的两个转义实体是 /
和 &
,它们都没有出现在转义图中。您可以通过添加分号来修复 &
。
虽然效率不是特别高,但您可以使用 answer suggested here。
此外,当我在 jsbin 中使用 _.unescape
时,我得到了预期的行为,而我认为您的代码使用了本机 unescape
函数。