【问题标题】:Multi-line template string with no newline characters?没有换行符的多行模板字符串?
【发布时间】:2018-03-04 10:32:02
【问题描述】:

我有这行代码:

 console.log(`now running each hook with name '${chalk.yellow(aBeforeOrAfterEach.desc)}', for test case with name '${chalk.magenta(test.desc)}'.`);

问题是我必须将它放在我的 IDE 中的多行上,以使其适合(我使用 100 列)。当我将模板字符串放在多行时,模板字符串会将其解释为换行符,这不是我想要的。

所以我的问题是 - 如何在不使用换行符记录的情况下拥有多行模板字符串代码?

【问题讨论】:

  • 串联??
  • `foo` + `bar` 有效,但我认为反斜杠解决方案很简洁

标签: javascript node.js template-literals template-strings


【解决方案1】:

试试

const foo = "foo"
const bar = "bar"

console.log(`now running each hook with name ` +
    `'${foo}', for test case with name '${bar}'` +
    `.`);

这应该保留任何空格,包括缩进。

【讨论】:

    【解决方案2】:

    在每行的末尾使用反斜杠 - \ - 以避免插入 \n

     console.log(`\
     now running each hook with name \
    '${'foo'}', for test case with name '${'bar'}' \
    .`);

    另一个选项应该是使用.split("\n").join(''),它将用空字符串替换所有换行符

    【讨论】:

    • 这种技术并没有我想象的那么好,在每个 \ 之后,它似乎将模板字符串中的文字空格添加到输出中,有点奇怪,我会继续尝试它。
    • 你能举个例子吗?
    • 是的,反斜杠似乎将缩进中的任何空格作为字符串中的文字空格。我看到的唯一解决方案是忽略导入字符串的单独文件中的缩进规则,但这显然不是最干净的解决方案。
    • @Nick Try my answer below.
    猜你喜欢
    • 2014-09-10
    • 2012-11-03
    • 2017-04-02
    • 2018-03-04
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2017-02-14
    • 2018-09-02
    相关资源
    最近更新 更多