我有一个带有一些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>"""
任何人都有一个好主意?
答案 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,这证明是有帮助的。在阅读了大约一半的文章后,它声明您可以使用向后刻度字符创建字符串。 (`)
试试这个:)
document.getElementById('test').innerHTML = `'|'|'|"|"`
&#13;
<div id="test" style="font-size:3em;"></div>
&#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\'"