微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除缩进,但在模板文字中保留换行符

如何解决删除缩进,但在模板文字中保留换行符

我有以下模板文字

let message = `
    1 call
    Alert time: 6:00:57 PM
    `

我已经在 SO 上尝试了各种答案,但是对于我正在使用的 API,这些解决方案都无法正常工作。这些解决方案似乎导致开头反引号和结尾反引号与缩进一起被删除后的换行符。

因为发生这种情况,我正在使用的 API 将模板文字视为没有换行符的单个字符串。

如何保留所有换行符,但只删除 1 callAlert time: 6:00:57 PM 前面的缩进?

我的预期输出是这样的:


1 call
Alert time: 6:00:57 PM

解决方法

正则表达式可以匹配行首的空格字符,并用空字符替换它们,只留下换行符:

message.replace(/^ +/gm,'')

演示:

let message = `
    1 call
    Alert time: 6:00:57 PM
    `
document.querySelector('textarea').value = message.replace(/^ +/gm,'');
<textarea></textarea>

,

我会通过所有新行 split \n 字符串,然后修剪数组中的项目以删除空格,然后用新行 \n 再次连接它们。 filter 是删除 split 数组中可能为空字符串的项

let message = `
    1 call
    Alert time: 6:00:57 PM
    `;
    
console.log(['',...message.split('\n').filter(Boolean).map(str => str.trim()),''].join('\n'));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。