我在Ruby中有以下代码。我想把这段代码转换成JavaScript。JS中的等效代码是什么?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
我在Ruby中有以下代码。我想把这段代码转换成JavaScript。JS中的等效代码是什么?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
当前回答
ES6更新:
正如第一个答案所提到的,使用ES6/Babel,您现在只需使用反引号即可创建多行字符串:
const htmlString = `Say hello to
multi-line
strings!`;
内插变量是一个流行的新功能,带有反勾分隔字符串:
const htmlString = `${user.name} liked your post about strings`;
这只是将文件转换为串联:
user.name + ' liked your post about strings'
ES5原始答案:
谷歌的JavaScript风格指南建议使用字符串连接而不是转义换行:不要这样做:var myString='相当长的英文文本字符串,错误消息\事实上,这是一个错误\让精力充沛的兔子脸红的信息\那些施瓦辛格的阴影)!我在哪里?哦,是的\你有一个错误,所有多余的空格都是\只是肉汁。祝你今天愉快;在编译时,不能安全地删除每行开头的空白;斜杠后的空白将导致棘手的错误;虽然大多数脚本引擎都支持这一点,但它不是ECMAScript的一部分。请改用字符串串联:var myString='相当长的英文文本字符串,错误消息'+“事实上,这是一个错误”+“让Energizer兔子脸红的消息(直接通过)”+那些施瓦辛格的阴影)!我在哪里?哦,是的,”+'您有一个错误,所有多余的空格都是'+只是肉汁。祝你今天愉快;
其他回答
如果恰好在Node中运行,则可以使用fs模块从文件中读入多行字符串:
var diagram;
var fs = require('fs');
fs.readFile( __dirname + '/diagram.txt', function (err, data) {
if (err) {
throw err;
}
diagram = data.toString();
});
你可以这样做。。。
var string = 'This is\n' +
'a multiline\n' +
'string';
ES6的方法是使用模板文字:
const str = `This
is
a
multiline text`;
console.log(str);
此处提供更多参考
至少在源代码方面,这是一种相当经济的方法:
function s() {
var args = [],index;
for (index = 0; index< arguments.length; index++) {
args.push (arguments [index]);
}
return args.join ("\n");
}
console.log (s (
"This is the first line",
"and this is the second",
"finally a third"
));
function s() {return arguments.join ("\n")}
如果“arguments”属性是一个正确的数组,当然会更好。
第二个版本可能使用“”来进行连接,当您想要控制非常长的字符串中的换行符时。
更新:
ECMAScript6(ES6)引入了一种新的文本类型,即模板文本。它们有很多特性,变量插值等等,但对于这个问题最重要的是,它们可以是多行的。
模板文本由反引号分隔:
var html = `
<div>
<span>Some HTML here</span>
</div>
`;
(注意:我并不主张在字符串中使用HTML)
浏览器支持是可以的,但您可以使用更兼容的转发器。
ES5原始答案:
Javascript没有here文档语法。但是,您可以转义字面换行符,这很接近:
"foo \
bar"