我在Ruby中有以下代码。我想把这段代码转换成JavaScript。JS中的等效代码是什么?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
我在Ruby中有以下代码。我想把这段代码转换成JavaScript。JS中的等效代码是什么?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
当前回答
刚刚尝试了Anonymous的答案,发现这里有一个小技巧,如果反斜杠后面有空格,它就不起作用了因此,以下解决方案不起作用-
var x = { test:'<?xml version="1.0"?>\ <-- One space here
<?mso-application progid="Excel.Sheet"?>'
};
但当空间被移除时,它会起作用-
var x = { test:'<?xml version="1.0"?>\<-- No space here now
<?mso-application progid="Excel.Sheet"?>'
};
alert(x.test);
希望它有帮助!!
其他回答
这适用于IE、Safari、Chrome和Firefox:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<div class="crazy_idea" thorn_in_my_side='<table border="0">
<tr>
<td ><span class="mlayouttablecellsdynamic">PACKAGE price $65.00</span></td>
</tr>
</table>'></div>
<script type="text/javascript">
alert($(".crazy_idea").attr("thorn_in_my_side"));
</script>
总之,我在用户javascript编程(Opera 11.01)中尝试了两种方法:
这一个不起作用:在JavaScript中创建多行字符串这非常有效,我还找到了如何让它在Notepad++源代码视图中看起来很好:在JavaScript中创建多行字符串
所以我推荐Opera用户JS用户的工作方法。与作者所说的不同:
它不适用于萤火虫或歌剧;仅在IE、chrome和safari上。
它在歌剧11中确实有效。至少在用户JS脚本中。遗憾的是,我不能对个人答案发表评论,也不能对答案进行投票,我会立即这样做。如果可能,请有更高权限的人帮我做。
在这里找到了很多过度设计的答案。我认为最好的两个答案是:
1:
let str = `Multiline string.
foo.
bar.`
其最终记录:
Multiline string.
foo.
bar.
2:
let str = `Multiline string.
foo.
bar.`
这会正确地记录它,但如果str嵌套在函数/对象等内部,则脚本文件中会很难看。:
Multiline string.
foo.
bar.
我非常简单的回答是用正则表达式正确记录str:
let str = `Multiline string.
foo.
bar.`.replace(/\n +/g, '\n');
请注意,这不是一个完美的解决方案,但如果您确定在新行(\n)之后至少会出现一个空格(+表示至少出现一次),则可以使用。它还可以与*(零或更多)一起使用。
您可以更明确地使用{n,},这意味着至少出现n次。
更新:
ECMAScript6(ES6)引入了一种新的文本类型,即模板文本。它们有很多特性,变量插值等等,但对于这个问题最重要的是,它们可以是多行的。
模板文本由反引号分隔:
var html = `
<div>
<span>Some HTML here</span>
</div>
`;
(注意:我并不主张在字符串中使用HTML)
浏览器支持是可以的,但您可以使用更兼容的转发器。
ES5原始答案:
Javascript没有here文档语法。但是,您可以转义字面换行符,这很接近:
"foo \
bar"
还要注意,当在每行末尾使用前向反斜杠在多行上扩展字符串时,前向反斜线后面的任何额外字符(主要是空格、制表符和错误添加的注释)都会导致意外的字符错误,我花了一个小时才发现
var string = "line1\ // comment, space or tabs here raise error
line2";