【问题标题】:Javascript breaking text across multiple lines while maintaining indentationJavascript 在保持缩进的同时打破多行文本
【发布时间】:2021-01-03 10:34:31
【问题描述】:

我有以下功能

const taskErrorMessage = (task, reason) => {
    const account = task.account;
    return {
        message: `ERROR. ACTION: ${task.action}. ACCOUNT: ${account._id}, \
${account.name}. REASON: ${reason}. DATE: \
${new Date()}`
    }
}

它不适合一行,因此我使用\ 将其分解,但是似乎如果我尝试添加缩进,则最终字符串将不正确,并带有不需要的空格。有没有办法在保持缩进的同时将字符串分成多行?

【问题讨论】:

  • 这必须用javascript解决吗?或者我们可以使用 HTML 和 CSS 吗?

标签: javascript


【解决方案1】:

对于裸模板文字,行首的空格总是按字面意思解释,因此它们不能用于代码缩进。

如果您希望所有空格都折叠起来,您可以使用 tagged template literal 来模仿此功能:

const $_ = (strings, ...vals) => {
    let result = ''

    strings.forEach((str, idx) => {
        result += str
        if (typeof vals[idx] !== 'undefined')
            result += vals[idx]
    })

    return result.trim().replace(/\s+/g, ' ')
}

console.log(
    $_`hooray
          indents for    every
                               ${1}
    `
)

但是,请注意,这将在运行时运行,而不是在编译时运行。除非您以这种方式创建数十万个字符串,否则它不太可能成为性能瓶颈,但同样值得考虑。

【讨论】:

  • 我尝试了文字换行符,它打破了我不想要的行
  • 如果您不介意性能开销,我已经用可能的解决方案编辑了我的答案。
猜你喜欢
  • 2013-01-29
  • 2014-08-19
  • 2016-08-23
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多