[英]unescape() function from underscore.js not working
我需要解碼 html 實體,例如: &
, <
, >
, "
, `
和'
.
作為該建議的SO后,我試圖用_.unescape()
從underscore.js這項任務。
但是, 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)
不要忘記通過從點擊Add library
按鈕時出現的下拉列表中選擇它來添加underscore.js
庫。
正如@DanPrince 的回答所指出的, unescape()
只解碼一組有限的字符:
&
, <
, >
, "
, `
, '
但是,將我的行從上面的示例更改為以下仍然不起作用(即使這次我使用了'
和&
):
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
函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.