为了账号安全,请及时绑定邮箱和手机立即绑定

在JavaScript中创建多行字符串

在JavaScript中创建多行字符串

aluckdog 2019-05-21 16:33:32
        我在Ruby中有以下代码。我想将此代码转换为JavaScript。什么是JS中的等效代码?text = <<"HERE"ThisIsAMultilineStringHERE
查看完整描述

4 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

ECMAScript 6(ES6)引入了一种新的文字,即模板文字。它们具有许多特征,可变插值等,但最重要的是,对于这个问题,它们可以是多线的。

模板文字由反引号分隔:

var html = `
  <div>
    <span>Some HTML here</span>
  </div>
`;

(注意:我不主张在字符串中使用HTML)

浏览器支持是可以的,但您可以使用转换器更兼容。


查看完整回答
反对 回复 2019-05-21
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

这种模式text = <<"HERE" This Is A Multiline String HERE在js中不可用(我记得在我很好的旧Perl时代使用它)。


为了保持对复杂或长多行字符串的监督,我有时使用数组模式:


var myString = 

   ['<div id="someId">',

    'some content<br />',

    '<a href="#someRef">someRefTxt</a>',

    '</div>'

   ].join('\n');

或者匿名模式已经显示(转义换行符),这可能是代码中的一个丑陋的块:


    var myString = 

       '<div id="someId"> \

some content<br /> \

<a href="#someRef">someRefTxt</a> \

</div>';

这是另一个奇怪但有效的'技巧' 1:


var myString = (function () {/*

   <div id="someId">

     some content<br />

     <a href="#someRef">someRefTxt</a>

    </div>        

*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];

外部编辑:jsfiddle


ES20xx支持使用模板字符串跨多行生成字符串:


let str = `This is a text

    with multiple lines.

    Escapes are interpreted,

    \n is a newline.`;

let str = String.raw`This is a text

    with multiple lines.

    Escapes are not interpreted,

    \n is not a newline.`;


查看完整回答
反对 回复 2019-05-21
?
波斯汪

TA贡献1811条经验 获得超4个赞

可以在纯JavaScript中使用多行字符串。

此方法基于函数的序列化,该函数被定义为依赖于实现。它在大多数浏览器中都有效(见下文),但不能保证它将来仍能使用,所以不要依赖它。

使用以下功能:

function hereDoc(f) {
  return f.toString().
      replace(/^[^\/]+\/\*!?/, '').
      replace(/\*\/[^\/]+$/, '');}

你可以在这里 - 像这样的文件:

var tennysonQuote = hereDoc(function() {/*!
  Theirs not to make reply,
  Theirs not to reason why,
  Theirs but to do and die
*/});

该方法已在以下浏览器中成功测试过(未提及=未测试):

  • IE 4 - 10

  • Opera 9.50 - 12(不是9-)

  • Safari 4 - 6(不是3-)

  • Chrome 1 - 45

  • Firefox 17 - 21(不是16-

  • Rekonq 0.7.0 - 0.8.0

  • Konqueror 4.7.4不支持

但是要小心你的缩放器。它往往会删除评论。对于YUI压缩器/*!将保留以(与我使用的)相似的注释。

我认为真正的解决方案是使用CoffeeScript


查看完整回答
反对 回复 2019-05-21
  • 4 回答
  • 0 关注
  • 1507 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信