объединить строку с переменными и escape-символами - PullRequest
3 голосов
/ 07 марта 2020

У меня есть js:

var title = "firts title isn't working";
var html = "<input type='text' value='${title}'>";

Я хочу получить это как результат:

// "<input type='text' value='firts title isn't working'>"

но я получаю это !!!

// "<input type='text' value='firts title isn' t='' working=''>"

Ответы [ 4 ]

1 голос
/ 07 марта 2020

Если вам не нужно смешивать одинарные и двойные кавычки, вы можете использовать двойные в шаблоне, и тогда сингл в тексте будет работать:

var title = "firts title isn't working";
var html = `<input type="text" value="${title}">`;
document.body.innerHTML=html;

В противном случае HTML равно HTML, и, как указал @Barmar, у него нет escape-символов ...
... но есть сущности, и тогда у вас есть оба, независимо от окружающих:

var title = "&quot;firts&quot; title isn&apos;t working";
var html = `<input type='text' value='${title}'>`;
document.body.innerHTML=html;

(Что такое firts?)

И, конечно, вы можете сделать замену в коде, чтобы вы могли иметь «читаемые» строки, и .replace("\'","&apos;"); их позже.

0 голосов
/ 07 марта 2020

спасибо, ребята, я решил это так:

var title = "some data \" && \' "; // get it from user input

var chars_toEscape = {'\'':'&apos;', '\"':'&quot;', "\`":"&#96;"};
title = title.replace(/['"`]/g, char => chars_toEscape[char]);

var html = `<input type="text" value="${title}">`;

// as result input contain as value: some data " && ' 
0 голосов
/ 07 марта 2020

попробуйте это:

var title = "firts title isn't working";
var html = "<input type='text' value='"+title+"'>";
alert(html);
0 голосов
/ 07 марта 2020

Использование const.

Использование экранированной строки:

const title = "first title isn\\'t working";
const html = "<input type='text' value='${title}'>";

Использование строки шаблона ES6:

const title = `first title isn't working`;
const html = "<input type='text' value='${title}'>";

Не уверен, будет ли работать вторая. Зависит от используемой вами шаблонной функции.

Вы не указали в своем вопросе, как эти две комбинации объединяются, и это будет влиять на то, что будет работать, а что нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...