随着 node.js 的兴起,多行字符串在 JavaScript 中变得越来越必要。
我已经知道你可以在每行的末尾使用 \n\,这不是我想要的。
\n\
当您指的是多行字符串时,您到底在寻找什么。
你是不是在寻找这样的东西:
var str = "Some \ String \ Here";
哪个会打印成“这里的一些线”?
如果是这样的话,请记住以上是有效的 Javascript,但这不是:
有什么区别? 在 \之后的一个空格。祝你调试愉快。
\
在 ES6中(Node 的版本大于 v4) ,一个新的“模板文字”内部类型被添加到 Javascript 中(用反勾表示“‘”) ,它也可以用来构造多行字符串,如:
`this is a single string`
计算结果为: 'this is a\nsingle string'。
'this is a\nsingle string'
注意,结果字符串中包含的第一行 是末尾的换行符。
添加模板文字是为了允许程序员构造字符串,其中值或代码可以直接注入到字符串文字中,而不必使用 util.format或其他模板,如:
util.format
let num=10; console.log(`the result of ${num} plus ${num} is ${num + num}.`);
它将在控制台上打印“10加10的结果是20”。
旧版本的节点可以使用“行延续”字符,允许您编写多行字符串,例如:
'this is a \ single string'
计算结果为: 'this is a single string'。
'this is a single string'
注意,第一行末尾的换行符是结果字符串中包含的 没有。
除了人们在这里发布的内容之外,我还听说连接比加入现代 javascript vms 要快得多。意思是:
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";
在某些情况下。 http://jsperf.com/string-concat-versus-array-join/3
除此之外,我发现这是 咖啡稿中最吸引人的特性之一。是的,是的,我知道,讨厌的人会讨厌的。
html = ''' <strong> cup of coffeescript </strong> '''
它特别适合 HTML 代码片段。我不是说这是一个使用它的理由,但我确实希望它能在 ecma 的土地:。
乔什
VanillaJavascipt 不支持多行字符串。语言预处理器现在已经变得可行了。
CoffeeScript 是其中最流行的一种语言,它有这个特性,但并不是最简单的,它是一种新的语言。Google 的 traceur 编译器为该语言添加了新的超集特性,但我不认为多行字符串是其中一个增加的特性。
我希望创建一个最小的 javascript 超集,它支持多行字符串和其他一些特性。我开始这个小语言前一段时间写的咖啡脚本初始编译器。我计划今年夏天完成它。
如果不能选择预编译器,那么还可以使用 script 标记技术,将多行数据存储在 html 中的 script 标记中,但是给它一个自定义类型,这样它就不会被求值。然后使用 javascript,您可以提取 script 标记的内容。
另外,如果在源代码中的任何一行的末尾放置一个,它将导致新行被忽略,就好像它不存在一样。如果你想要换行,那么你必须以“ n”结束这一行。
请看 CoffeeScript: http://coffeescript.org
它支持多行字符串、插值、数组理解和许多其他好东西。
看一下 node.js 的 Mstring模块。
这是一个简单的小模块,允许您在 JavaScript 中使用多行字符串。 照我说的做: var M = require('mstring') var mystring = M(function(){/*** Ontario Mining and Forestry Group ***/}) 得到 mystring === "Ontario\nMining and\nForestry\nGroup" 差不多就是这样。 它是如何工作的 在 Node.js 中,可以调用函数的 .toString方法,它会提供函数定义的源代码,包括所有注释。正则表达式获取注释的内容。 是的,这是一个黑客。从 多米尼克 · 塔尔的一次性评论启发。
这是一个简单的小模块,允许您在 JavaScript 中使用多行字符串。
照我说的做:
var M = require('mstring')
var mystring = M(function(){/*** Ontario Mining and Forestry Group ***/})
var mystring = M(function(){/***
Ontario
Mining and
Forestry
Group
***/})
得到
mystring === "Ontario\nMining and\nForestry\nGroup"
差不多就是这样。
它是如何工作的 在 Node.js 中,可以调用函数的 .toString方法,它会提供函数定义的源代码,包括所有注释。正则表达式获取注释的内容。
.toString
是的,这是一个黑客。从 多米尼克 · 塔尔的一次性评论启发。
注意: 模块(截至2012/13/11)在关闭 ***/之前不允许使用空格,因此您需要自己修改它。
***/
如果使用 io.js,它支持 ECMAScript 6中的多行字符串。
var a = `this is a multi-line string`;
有关详细信息,请参阅 http://davidwalsh.name/es6-io的“新字符串方法”,有关跟踪兼容性,请参阅 http://kangax.github.io/compat-table/es6/的“模板字符串”。
多行字符串是 JavaScript (自 ES6以来)的当前部分,并且在 node.js v4.0.0和更新的版本中受到支持。
var text = `Lorem ipsum dolor sit amet, consectetur adipisicing elit. `; console.log(text);
除了公认的答案:
计算结果为: ‘ this is a nsingle string’。
如果你想使用字符串插值,但没有一个新的行, 只要像普通字符串那样加上反斜杠即可:
`this is a \ single string`
= > ‘ this is a single string’。
但请记住,手动留白是必要的:
`this is a\ single string`
= > ‘ this is single string’