Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在node.js中创建多行字符串?_String_Node.js_Multiline - Fatal编程技术网

String 如何在node.js中创建多行字符串?

String 如何在node.js中创建多行字符串?,string,node.js,multiline,String,Node.js,Multiline,随着node.js的兴起,JavaScript中越来越需要多行字符串 在Node.JS中是否有一种特殊的方法可以做到这一点,即使它在浏览器中不起作用 是否有任何计划或至少一个功能请求来实现这一点,我可以支持 我已经知道您可以在每行末尾使用\n\,这不是我想要的。当您指的是多行字符串时,您到底在寻找什么 您是否正在寻找类似于: var str = "Some \ String \ Here"; 哪一个会打印为“这里的某个字符串” 如果是这样,请记住以上是有效的Javascript

随着node.js的兴起,JavaScript中越来越需要多行字符串

  • 在Node.JS中是否有一种特殊的方法可以做到这一点,即使它在浏览器中不起作用
  • 是否有任何计划或至少一个功能请求来实现这一点,我可以支持

  • 我已经知道您可以在每行末尾使用
    \n\
    ,这不是我想要的。

    当您指的是多行字符串时,您到底在寻找什么

    您是否正在寻找类似于:

    var str = "Some \
        String \
        Here";
    
    哪一个会打印为“这里的某个字符串”

    如果是这样,请记住以上是有效的Javascript,但这不是:

    var str = "Some \ 
        String \
        Here";
    
    有什么区别?
    \
    后面的空格。在调试过程中享受乐趣。

    node v4和node的当前版本 从ES6(以及大于v4的Node版本)开始,Javascript中添加了一个新的“template literal”固有类型(用反勾“`”表示),该类型也可用于构造多行字符串,如:

    `this is a 
    single string`
    
    其计算结果为:
    “这是一个\n单个字符串”

    请注意,第一行末尾的换行符包含在结果字符串中

    添加了模板文本以允许程序员构造字符串,其中值或代码可以直接注入字符串文本,而无需使用
    util.format
    或其他模板,如:

    let num=10;
    
    console.log(`the result of ${num} plus ${num} is ${num + num}.`);
    
    它将在控制台上打印“10加10的结果是20.”

    节点的旧版本 旧版本的节点可以使用“行延续”字符,允许您编写多行字符串,例如:

    'this is a \
    single string'
    
    其计算结果为:
    “这是一个字符串”


    请注意,第一行末尾的换行符未包含在结果字符串中。

    除了人们在这里发布的内容之外,我听说连接可以比加入现代javascript虚拟机快得多。意思是:

    var a = 
    [ "hey man, this is on a line",
      "and this is on another",
      "and this is on a third"
    ].join('\n');
    
    将慢于:

    var a = "hey man, this is on a line\n" + 
            "and this is on another\n" +
            "and this is on a third";    
    
    在某些情况下

    另一方面,我发现这是一个更吸引人的功能。是的,是的,我知道,憎恨者会憎恨的

    html = '''
           <strong>
             cup of coffeescript
           </strong>
           '''
    
    html=''
    
    一杯咖啡
    
    '''
    
    这对于html代码片段来说尤其好。我并不是说这是使用它的理由,但我真的希望它能在ecma土地上着陆:-(


    Josh

    Vanilla Javascipt不支持多行字符串。最近,语言预处理器变得可行

    最流行的CoffeeScript有这个功能,但它不是最小的,它是一种新语言。Google的traceur编译器将新功能作为超集添加到该语言中,但我不认为多行字符串是添加的功能之一

    我正在寻找一个支持多行字符串和其他一些功能的javascript的最小超集。我在为coffeescript编写初始编译器之前不久就开始使用这个小语言。我计划在今年夏天完成它

    如果预编译器不是一个选项,那么还有脚本标记攻击,您可以将多行数据存储在html中的脚本标记中,但给它一个自定义类型,这样它就不会被评估。然后使用javascript,您可以提取脚本标记的内容


    此外,如果在源代码中的任何一行末尾加上\号,则会导致换行符被忽略,就像它不在那里一样。如果要换行符,则必须在换行符结尾加上“\n\”

    看一下CoffeeScript:

    它支持多行字符串、插值、数组理解和许多其他好东西。

    看看node.js的模块

    这是一个简单的小模块,允许您在JavaScript中使用多行字符串

    只要这样做:

    var M=require('mstring')

    var mystring=M(函数(){/***
    安大略省
    挖掘和
    林业
    ***/})

    得到

    mystring===“安大略省\n矿业和\n矿业\n集团”

    差不多就是这样

    它的工作原理
    在Node.js中,您可以调用函数的
    .toString
    方法,它将为您提供函数定义的源代码,包括任何注释。正则表达式将获取注释的内容

    是的,这是一个黑客。灵感来源于一个来自美国的一次性评论



    注意:该模块(自2012/13/11起)在结束前不允许空白,因此您需要自己破解。

    如果您使用io.js,它支持多行字符串,就像在ECMAScript 6中一样

    var a =
    `this is
    a multi-line
    string`;
    

    有关详细信息,请参阅中的“新字符串方法”,有关跟踪兼容性,请参阅中的“模板字符串”。

    多行字符串是JavaScript的当前部分(自ES6以来),在node.js v4.0.0及更新版本中受支持

    var text = `Lorem ipsum dolor 
    sit amet, consectetur 
    adipisicing 
    elit.  `;
    
    console.log(text);
    

    除了公认的答案外:

    `this is a 
    single string`
    
    其计算结果为:“这是一个\n单字符串”

    如果要使用字符串插值但不使用新行, 只需像在普通字符串中一样添加反斜杠:

    `this is a \
    single string`
    
    =>“这是一个字符串”

    请记住,手动空白是必要的,但:

    `this is a\
    single string`
    

    =>“这是一个单字符串”

    真是胡说八道。如果不在\后面加上一个字符,我就无法显示空格。@jcolebrand:是的,很有趣,不是吗:p)这是一个肮脏的黑客行为。请不要!谢谢@Robert,“\”insight之后的空间为我节省了一些时间!你究竟为什么要插入硬线回报?DOM中没有任何东西支持这一点(除了“pre”),所有其他常见的返回类型都不关心。因此,我不会在左边有选项卡,而在右边没有返回。我喜欢两者都要,或者一个也不要。现在我正在使用
    print(“”)
    打印我的HTML。它既没有制表符,也没有“整洁”的返回,但使用Perl
    @jcolebrand会更容易:Node.JS并不是主要关注点