Декодировать и обратно в JavaScript - PullRequest
205 голосов
/ 13 сентября 2010

У меня есть строки вроде

var str = 'One & two & three';

отображается в HTML веб-сервером. Мне нужно преобразовать эти строки в

'One & two & three'

В настоящее время это то, что я делаю (с помощью jQuery):

$(document.createElement('div')).html('{{ driver.person.name }}').text()

Однако у меня тревожное чувство, что я делаю это неправильно. Я пытался

unescape("&")

но, похоже, не работает, как и decodeURI / decodeURIComponent.

Существуют ли другие, более естественные и элегантные способы сделать это?

Ответы [ 12 ]

1 голос
/ 07 октября 2016

решение javascript, которое улавливает наиболее распространенные:

var map = {amp: '&', lt: '<', gt: '>', quot: '"', '#039': "'"}
str = str.replace(/&([^;]+);/g, (m, c) => map[c])

- это обратное значение https://stackoverflow.com/a/4835406/2738039

0 голосов
/ 13 декабря 2018

Я пробовал все, чтобы удалить & из массива JSON.Ни один из приведенных выше примеров, но https://stackoverflow.com/users/2030321/chris не дал отличного решения, которое привело меня к решению моей проблемы.

var stringtodecode="<B>Hello</B> world<br>";
document.getElementById("decodeIt").innerHTML=stringtodecode;
stringtodecode=document.getElementById("decodeIt").innerText

Я не использовал, потому что не понимал, как вставить его вмодальное окно, которое вытягивало данные JSON в массив, но я попробовал это на основе примера, и это сработало:

var modal = document.getElementById('demodal');
$('#ampersandcontent').text(replaceAll(data[0],"&amp;", "&"));

Мне нравится это, потому что это было просто, и это работает, но не уверен почемуэто не широко используется.Искал привет & низ, чтобы найти простое решение.Я продолжаю искать понимание синтаксиса и есть ли риск его использования.Пока ничего не нашли.

...