JavaScript 多行字符串

18
问题是:
如何使用 JavaScript 方法将多行字符串像在 PHP 中一样存储到变量中?

1
“grab”是什么意思?从哪里获取? - Unicron
请在 https://dev59.com/c3RA5IYBdhLWcg3w2xsI#19970452 上查看我的答案。 - AgelessEssence
6个回答

25

如果你所说的“多行字符串”指的是包含换行符的字符串,那么可以通过使用 \n(表示新行)对其进行转义来书写:

var multilineString = 'Line 1\nLine 2';
alert(multilineString);
// Line 1
// Line 2
如果你的意思是如何在代码中将字符串写成多行,那么你可以通过在行末添加\反斜杠来继续字符串:

如果你的意思是如何在代码中将字符串写成多行,那么你可以通过在行末添加\反斜杠来继续字符串:

var multilineString = 'Line \
1\nLine 2';
alert(multilineString);
// Line 1
// Line 2

15
var es6string = `<div>
    This is a string.
</div>`;

console.log(es6string);

2
注意:这仅适用于ES6,并且在撰写本文时,在IE11或Safari中支持不佳。 - Mike Cluck
2
这正在变成正确的答案。 - John
哎呀,为什么JS需要重新发明轮子。这应该是一个子进程。 - Joshua Cook

9

根据之前的答案和不同的使用情况,这里有一个小例子:

https://gist.github.com/lavoiesl/5880516 不要忘记使用 /*! 来避免在缩小化时移除注释。

function extractFuncCommentString(func) {
  var matches = func.toString().match(/function\s*\(\)\s*\{\s*\/\*\!?\s*([\s\S]+?)\s*\*\/\s*\}/);
  if (!matches) return false;

  return matches[1];
}

var myString = extractFuncCommentString(function(){/*!
  <p>
    foo bar
  </p>
*/});

2
我以前从未见过这种方法,不知道它的实用性如何,但这是处理多行字符串的非常有创意的方式!加一! - Oleg

5

在Javascript中实现多行字符串的唯一方法是:

var multiline_string = 'line 1\
line 2\
line 3';

1
var myString = [
  'One line',
  'Another line'
].join('\n');

1

This works:

var htmlString = "<div>This is a string.</div>";

This fails:

var htmlSTring = "<div>
  This is a string.
</div>";

有时为了易读性,这是可取的。
添加反斜杠以使其正常工作:
var htmlSTring = "<div>\
  This is a string.\
</div>";

这样也可以。
var htmlSTring  = 'This is\n' +
'a multiline\n' + 
'string';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接