Как убежатьв JavaScript - PullRequest
       23

Как убежатьв JavaScript

0 голосов
/ 01 февраля 2019

Скажите, у меня есть эта строка java&script, как я могу преобразовать это в java&script?

В консоли Google Chrome это не работает

var str="java&script";
var str_esc=escape(str);
var str_unc = unescape(str_esc)
console.log(str_esc)
console.log(str_unc)

, но этоКажется, работает просто отлично

<!DOCTYPE html>
<html>
<body>

<script>

var str="java&amp;script";
var str_esc=escape(str);
document.write(str_esc + "<br>")
document.write(unescape(str_esc))

</script>

</body>
</html>

Спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Простое решение для преобразования из входной строки, скажем, "java&amp;script" в "java&script" может быть достигнуто с помощью регулярного выражения &amp;, переданного методу string#replace :

var inputStr="java&amp;script&amp;jj";

/* 
match any occourance of &amp; in the string and replace
with &. Use the gi to cause replacement to happen irrespective
of case (i) and globally across all occurances of &amp; 
in the string (g).
*/
var unescapedStr = inputStr.replace(/&amp;/gi, '&');

console.log(unescapedStr);
0 голосов
/ 01 февраля 2019

Вы можете декодировать сущность с помощью функции, которая сбрасывает строку в текстовое поле, а затем извлекает значение из этого, например, так:

function htmlEntityDecode(str){
    var txt = document.createElement('textarea');
    txt.innerHTML = str;
    
    return txt.value;
}

var str = htmlEntityDecode("java&amp;script");

console.log( str );

Или даже проще, если это всего лишь один случай, почему бы просто не использовать простой метод .replace() для него?

var str = 'java&amp;script';
str = str.replace('&amp;', '&');

console.log( str );

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

var str = 'java &amp; script and script &amp; java';
str = str.replace(/&amp;/g, '&');

console.log( str );
...