我在Ruby中有以下代码。我想把这段代码转换成JavaScript。JS中的等效代码是什么?

text = <<"HERE"
This
Is
A
Multiline
String
HERE

当前回答

准确的

Ruby produce:“This\nIs\nMultiline\nString\n”-在JS下面生成完全相同的字符串

text=`此是A.多行一串`//测试console.log(JSON.stringify(文本));console.log(文本);

这是对朗尼最佳答案的改进,因为他的答案中的换行符与ruby输出中的位置不完全相同

其他回答

这适用于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将函数转换为字符串并使用/**/语法创建多行注释,然后删除“function(){/*\n”和“\n*/}”。

var multiline = function(string) { return string.toString().replace(/(^[^\n]*\n)|(\n\*\/\})/g, ""); };

console.log(multiline(function() {/*
Hello world!
I'm a multiline string!

Tada!
*/}));

我能看到的唯一缺陷是语法高亮显示。

编辑:如果我再向下滚动一点,我会看到这个答案完全一样:https://stackoverflow.com/a/5571069/916553

实现这一点有多种方法

1.斜线拼接

  var MultiLine=  '1\
    2\
    3\
    4\
    5\
    6\
    7\
    8\
    9';

2.规则串联

var MultiLine = '1'
+'2'
+'3'
+'4'
+'5';

3.数组连接串联

var MultiLine = [
'1',
'2',
'3',
'4',
'5'
].join('');

就性能而言,斜杠串联(第一个)是最快的。

有关性能的更多详细信息,请参阅本测试用例

更新:

使用ES2015,我们可以利用其模板字符串功能。有了它,我们只需要使用反引号来创建多行字符串

例子:

 `<h1>{{title}}</h1>
  <h2>{{hero.name}} details!</h2>
  <div><label>id: </label>{{hero.id}}</div>
  <div><label>name: </label>{{hero.name}}</div>
  `

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兔子脸红的消息(直接通过)”+那些施瓦辛格的阴影)!我在哪里?哦,是的,”+'您有一个错误,所有多余的空格都是'+只是肉汁。祝你今天愉快;

ES6的方法是使用模板文字:

const str = `This 

is 

a

multiline text`; 

console.log(str);

此处提供更多参考