Можете ли вы создать строку JavaScript без использования кавычек 'или'? - PullRequest
7 голосов
/ 24 января 2012

У меня есть файл JS с некоторым XML-файлом, в котором XML-файл должен преобразовываться сервером в слово.

* 1003 Е.Г. *

var ip = "<lang:cond><lang:when test="$(VAR{'ip_addr'})">$(VAR{'ip_addr'})</lang:when></lang:cond>";

Это преобразуется в:

var ip = "192.168.0.0";

Однако, если сервер не работает должным образом, я не хочу, чтобы была синтаксическая ошибка, и это ОЧЕНЬ важно. В настоящее время будет синтаксическая ошибка, потому что язык использует оба типа кавычек. Я не могу придумать, как обойти это, но, возможно, есть другой способ сделать кавычки в JavaScript? Или создать строку?

Например, в Python я бы использовал тройные кавычки:

ip = """<lang:cond><lang:when test="$(VAR{'ip_addr'})">$(VAR{'ip_addr'})</lang:when></lang:cond>"""

У кого-нибудь есть блестящая идея?

Ответы [ 5 ]

22 голосов
/ 08 апреля 2014

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

var x = String(/This contains no quotes/);
x = x.substring(1, x.length-1);
x;
4 голосов
/ 26 декабря 2015

Я искал решение той же проблемы. Кто-то предложил посмотреть на https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/template_strings, что оказалось полезным. Прочитав примерно половину статьи, он заявил, что вы можете создавать строки с обратным тиковым символом. ( `)

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

document.getElementById('test').innerHTML = `'|'|'|"|"`
<div id="test" style="font-size:3em;"></div>
4 голосов
/ 24 января 2012

В JavaScript вы можете избежать любого типа цитаты с \.

Например:

var str = "This is a string with \"embedded\" quotes.";
var str2 = 'This is a string with \'embedded\' quotes.';

В частности, ваш блок кода JavaScript должен быть преобразован в:

var ip = "<lang:cond><lang:when test=\"$(VAR{'ip_addr'})\">$(VAR{'ip_addr'})</lang:when></lang:cond>";

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

3 голосов
/ 25 сентября 2014

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

String(/This contains no quotes/).substring(1).slice(0,-1)

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

String.fromCharCode(72,69,76,76,79)

Создание кодов символов для этого:

var s = "This contains no quotes";
var result = [];
for (i=0; i<s.length; i++)
{
    result.push(s.charCodeAt(i));
}
result
0 голосов
/ 24 января 2012

Вы не можете создать строку без использования одинарных или двойных кавычек, так как даже при непосредственном вызове объекта-прототипа String() все равно требуется передать ей строку.

Внутри XML вы будете использовать CDATA, но внутри JS вам придется просто избежать '\"strings\"' "\'appropriately\'"

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