簡體   English   中英

underscore.js 中的 unescape() 函數不起作用

[英]unescape() function from underscore.js not working

我需要解碼 html 實體,例如: & < , > , " , ` ' .

作為該建議的SO后,我試圖用_.unescape()underscore.js這項任務。

但是, unescape()似乎沒有任何效果。 當我在下面的字符串上調用它時,它只返回字符串本身:

const line = 'Tweag I/O | Paris, France &amp Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'

要驗證,您可以轉到JSBin並粘貼以下代碼:

const line = 'Tweag I/O | Paris, France &amp 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 = {
  '&': '&',
  '<': '&lt;',
  '>': '&gt;',
  '"': '&quot;',
  "'": '&#x27;',
  '`': '&#x60;'
};
var unescapeMap = _.invert(escapeMap);

字符串中的兩個轉義實體是&#x2F; &amp ,它們都沒有出現在轉義圖中。 你可以修復&amp; 通過添加分號。

雖然它不是特別有效,但您可以使用此處建議答案

此外,當我在 jsbin 中使用_.unescape時,我得到了預期的行為,而我認為您的代碼使用了本機unescape函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM