ES6字符串模板多行清除行头空格制表符

简介: 最近在撸项目工程化的时侯,需要输出一些文案提示,对于多行文本我肯定优先考虑用 ES6字符串模板来实现,直接使用的效果并不是很符合想要的。因为字符串模板会默认保留你换行的格式,包括缩进这些。


ES6字符串模板多行清除行头空格制表符


前言


最近在撸项目工程化的时侯,需要输出一些文案提示,

对于多行文本我肯定优先考虑用 ES6字符串模板来实现,直接使用的效果并不是很符合想要的。


因为字符串模板会默认保留你换行的格式,包括缩进这些。

效果图


ES6 String Template(raw)



let outMsg = `
${override ? "正在" : "文件不存在,开始"}生成文件${fileName}..
文件路径: ${colors.yellow(filePath)}
继续执行构建-->`;
console.log(outMsg);


正则改造下



let outMsg = `
${override ? "正在" : "文件不存在,开始"}生成文件${fileName}..
文件路径: ${colors.yellow(filePath)}
继续执行构建-->`.replace(/^\s+/gm, "");
console.log(colors.green(outMsg));


解决姿势


传统的字符串拼接


这种虽然可以对齐的,但是写起来不舒服, 所以我选择了正则来处理


let a='fads\n'
a+='rewr\n';


正则方法


/**
 *
 * @param {string} strTemplate - ES6字符串模板多行
 * @param {boolean} onlyMatchSpace - 只匹配行前空格(中文空格和英文空格)
 * @returns {string} - 符合格式的字符串数据
 * @description - 返回去除行头空格的字符串
 */
function removeMultipleStrLeadingSpace (strTemplate, onlyMatchSpace = true) {
  if (!strTemplate) {
    return '';
  }
  if (onlyMatchSpace) {
    // eslint-disable-next-line no-irregular-whitespace
    return strTemplate.replace(/^[  ]+/gm, '');
  }
  return strTemplate.replace(/^\s+/gm, '');
}
module.exports = removeMultipleStrLeadingSpace;

正则匹配范围测试



改进方案


若是要考虑中文空格以及保留换行符,不能 \s 一撸到底,具体看函数

\s :等同于 [\r\n\t\f\v ]

目录
相关文章
如何去掉字符串开头,结尾或者中间的空格及其他不想要的字符
去掉文本字符串开头,结尾或者中间不想要的字符,比如空白。
|
3月前
|
JSON 数据格式
UltraEdit 去除文本中的空行,按指定字符换行
UltraEdit 去除文本中的空行,按指定字符换行
66 0
UltraEdit 去除文本中的空行,按指定字符换行
|
5月前
|
JavaScript
请用 js 去除字符串空格?
请用 js 去除字符串空格?
|
6月前
|
移动开发
基于Notepad++ 快速替换 换行符 为 逗号
【5月更文挑战第5天】基于Notepad++ 快速替换 换行符 为 逗号
|
6月前
|
索引 Python
字符串:比较、拼接、切割、转义字符;相关切割、替换、查找、去除空白、转大小写函数的方法
字符串:比较、拼接、切割、转义字符;相关切割、替换、查找、去除空白、转大小写函数的方法
40 0
解决“word空格后面下划线自动消失”问题
解决“word空格后面下划线自动消失”问题
|
11月前
|
数据采集 JavaScript
JS去除字符串的空格
JS去除字符串的空格
53 0
|
Linux 数据安全/隐私保护 C++
C++解析一些特殊符号tab、换行符号
C++解析一些特殊符号tab、换行符号
273 1
C++解析一些特殊符号tab、换行符号
|
机器学习/深度学习 移动开发 Unix
如何使用UE去除复制文本中的空格、换行符和TAB
如何使用UE去除复制文本中的空格、换行符和TAB
如何使用UE去除复制文本中的空格、换行符和TAB
lodash转换字符串为空格分隔的大写单词
lodash转换字符串为空格分隔的大写单词
83 0