underscore.js中的unescape()函数不起作用
unescape() function from underscore.js not working
我需要解码html实体,如:&
、<
、>
、"
、`
和'
。
正如这篇SO文章中所推荐的,我试图使用underscore.js中的_.unescape()
来完成这项任务。
然而,unescape()
似乎没有任何作用。当我调用它时,例如在以下字符串上,它只返回字符串本身:
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()
只解码有限的一组字符:
&
、<
、>
、"
、`
、'
但是,把我的台词从上面的例子改成下面的仍然没有;t工作(即使这次我使用'
和&
):
const line = `'Tweag I'O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'`
最终更新
我用另一个图书馆解决了我的问题。我现在使用的不是underscore.js
,而是他提供了我想要的功能。
现在,我可以调用decode(line)
和所有html实体都得到正确的翻译。然而,我将跟进这个问题的答案,并接受解释unescape()
为什么不能按预期工作的答案。
查看下划线的来源,所有内容都通过以下映射进行转换。
var escapeMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'`': '`'
};
var unescapeMap = _.invert(escapeMap);
字符串中的两个转义实体是/
和&
,它们都不出现在转义映射中。您可以通过添加分号来修复&
。
虽然它不是特别有效,但你可以使用这里建议的答案。
此外,当我在jsbin中使用_.unescape
时,我得到了预期的行为,而我认为您的代码使用了本机unescape
函数。
相关文章:
- Ember Data DS.Model's set函数不起作用
- 为什么我的JavaScript堆栈排序函数不起作用
- Javascript onchange()函数不起作用
- 另一个Ajax函数触发的Ajax函数不起作用
- 从PHP调用JS函数不起作用
- jQuery validate函数不起作用
- JS-窗口宽度函数不起作用
- javascript函数,该函数不起作用,但不会显示任何错误
- 为什么这个排序函数不起作用
- 为什么这个反向函数不起作用
- Javascript parseInt 函数不起作用
- 我的函数不起作用,Ajax调用,JQuery,调用外部?我不知道
- 主干构造函数不起作用
- Javascript:this.value 函数不起作用
- Mocha 的 beforeEach() 和 done() 函数不起作用
- 在jQuery中,我的函数不起作用
- jquery-ui-rails的draggable和dropable函数不起作用
- 数学函数不起作用
- Javascript-创建打印到HTML的函数不起作用
- 我上传了客户's服务器一个js函数不起作用