你可以在不使用'或'引号的情况下创建JavaScript字符串吗?

时间:2012-01-24 01:26:50

标签: javascript string

我有一个带有一些XML的JS文件,其中XML应该由服务器转换为单词。

E.g。

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 个答案:

答案 0 :(得分:22)

我不得不为项目创建没有引号的字符串。我们正在向浏览器提供可执行的客户端javascript以用于内部网站。接收端在显示时会删除双引号和单引号。我发现绕过引号的一种方法是将我的字符串声明为正则表达式。

var x = String(/This contains no quotes/);
x = x.substring(1, x.length-1);
x;

答案 1 :(得分:4)

在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>";

一般情况下,我总是倾向于转义引号而不必不断地切换引号类型,具体取决于可以使用的引号类型。

答案 2 :(得分:4)

我一直在寻找同样问题的解决方案。有人建议查看https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/template_strings,这证明是有帮助的。在阅读了大约一半的文章后,它声明您可以使用向后刻度字符创建字符串。 (`)

试试这个:)

&#13;
&#13;
document.getElementById('test').innerHTML = `'|'|'|"|"`
&#13;
<div id="test" style="font-size:3em;"></div>
&#13;
&#13;
&#13;

答案 3 :(得分:3)

使用字符串原型:

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

答案 4 :(得分:0)

如果不使用单引号或双引号,则无法创建字符串,因为即使直接调用String()原型对象仍然需要将字符串传递给它。

在XML内部你会使用CDATA,但在JS中你必须逃避'\"strings\"' "\'appropriately\'"