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