在es6模板文字,如何包装一个长模板文字到多行而不创建一个新的行在字符串?

例如,如果你这样做:

const text = `a very long string that just continues
and continues and continues`

然后它将为字符串创建一个新的行符号,就像解释它有一个新的行一样。如何在不创建换行符的情况下将长模板文字包装到多行?


当前回答

这是一个旧的。但它出现了。如果你在编辑器中留下任何空格,它会把它们放在那里。

if
  const text = `a very long string that just continues\
  and continues and continues`;

只要用普通的+符号

if
  const text = `a very long string that just continues` +
  `and continues and continues`;

其他回答

另一种选择是使用Array。像这样加入:

[
    'This is a very long string. ',
    'It just keeps going ',
    'and going ',
    'and going ',
    'and going ',
    'and going ',
    'and going ',
    'and going',
].join('')

@ codingconspiracy提出的解决方案在节点7上不适合我。好吧,如果我在第一行不使用续行,它就会工作,否则它就会失败。

这可能不是最好的解决方案,但它没有任何问题:

(`
    border:1px solid blue;
    border-radius:10px;
    padding: 14px 25px;
    text-decoration:none;
    display: inline-block;
    text-align: center;`).replace(/\n/g,'').trim();

这个NPM包允许你做以下事情…

import { oneLine } from 'common-tags';

const foo = oneLine`foo
bar
baz`;

console.log(foo); // foo bar baz

类似于Doug的回答,这被我的TSLint配置所接受,并且不受我的IntelliJ自动格式化器的影响:

const text = `a very long string that just ${
  continues
} and ${continues} and ${continues}`

如果你的问题是相反的,你需要保留换行符,但由于某种原因,它们不被尊重,只需在文本容器中添加css属性:

#yourTextContainer {
  white-space: pre-line;
}