首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ES6字符串模板多行清除行头空格制表符

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

作者头像
CRPER
发布于 2019-11-29 02:06:26
发布于 2019-11-29 02:06:26
1.1K00
代码可运行
举报
文章被收录于专栏:CRPER折腾记CRPER折腾记
运行总次数:0
代码可运行

前言

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

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

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

效果图

ES6 String Template(raw)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let outMsg = `
${override ? "正在" : "文件不存在,开始"}生成文件${fileName}..
文件路径: ${colors.yellow(filePath)}
继续执行构建-->`;
console.log(outMsg);
复制代码

正则改造下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let outMsg = `
${override ? "正在" : "文件不存在,开始"}生成文件${fileName}..
文件路径: ${colors.yellow(filePath)}
继续执行构建-->`.replace(/^\s+/gm, "");
console.log(colors.green(outMsg));
复制代码

解决姿势

传统的字符串拼接

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let a='fads\n'
a+='rewr\n';
复制代码

正则方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 *
 * @param {string} strTemplate - ES6字符串模板多行
 * @returns {string}
 * @description - 返回去除行头空格的字符串
 */
function removeMultipleStrLeadingSpace(strTemplate) {
  if (!strTemplate) {
    return "";
  }
  return strTemplate.replace(/^\s+/gm, "");
}

module.exports = removeMultipleStrLeadingSpace;
复制代码
正则匹配范围测试

总结

有这个函数基本可以让我写多行文案舒服一些了,有改进的方案或者不对之处请留言,谢谢阅读

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年11月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【go语言】Goroutines 并发模式(二)
摘要 接上一篇博客,主要是对GO语言中的并发编程模式做一个粗略的归纳总结,文中示例参考自golang conference中的一些演讲和博客,go涉及到的Go语言的语法知识细节将予以略去。搬运自原博客www.nyankosama.com 前言 在Goroutines 并发模式(一)中,我们简单地通过boring函数的例子来粗略地阐述了通过channels来和goroutines交流的方法。在本篇中,我将从pattern的方向出发,通过对boring函数的例子进行各种改写,来讲解几种常见了goroutines
李海彬
2018/03/22
7580
【go语言】Goroutines 并发模式(二)
【go语言】Goroutines 并发模式(一)
摘要 这一篇主要是对GO语言中的并发编程模式做一个粗略的归纳总结,文中示例参考自golang conference中的一些演讲和博客,go涉及到的Go语言的语法知识细节将予以略去。搬运自原博客www.nyankosama.com 前言 由于前一阶段实习中接到的项目的告一段落,不知不觉便多出了许多空余的时间,于是就想总结一下最近因为个人兴趣而学习的一些东西。从这篇文章开始以及后面陆续的几篇关于GO语言的文章,均是博主最近对GO语言学习过程中的一些感悟、总结,类似于学习笔记的东西。记录下来并整理成博客一为对学习
李海彬
2018/03/22
9340
channel练习题
编写一个程序,其中两个 goroutine 来回传递一个整数十次。当每个 goroutine 接收到整数时打印。每次通过整数都增加。一旦整数等于 10,立刻终止程序。
Michel_Rolle
2024/09/17
3.1K0
go chan 两种应用模型
    协程完成: 7     协程完成: 8     协程完成: 2     协程完成: 5     协程完成: 4     协程完成: 6     协程完成: 1     协程完成: 0     协程完成: 3     协程完成: 9     主程完成
地球流浪猫
2018/08/02
3370
Go 语言简介(下) - 特性
goroutine GoRoutine主要是使用go关键字来调用函数,你还可以使用匿名函数,如下所示: package main import "fmt" func f(msg string) { fmt.Println(msg) } func main(){ go f("goroutine") go func(msg string) { fmt.Println(msg) }("going") } 我们再来看一个示例,下面的代码中包括很多内容,包括时间处
李海彬
2018/03/22
2.3K0
深入Go:使用context包轻松完成并发控制
一次请求到达后台,需要并发启动大量的任务以组合出最终的响应,如何设计实现:一个请求到来之后,X秒超时;超时或遇到错误时立即返回,并取消所有并发任务?其实用了Go context包,这个问题就可以非常优雅自然地解决,并且了解Context之后你会赞叹:“哇,真就该这么设计!”
wenxing
2021/12/14
1.3K0
可能不知道的关于golang 的10件事情
匿名结构体 最常见的匿名用法,不用单独定义一个结构体类型 var config struct { APIKey string OAuthConfig oauth.Config } config.APIKey = "BADC0C0A" 匿名结构体定义时并初始化 data := struct { Title string Users []*User }{
李海彬
2018/03/27
6240
Go协程加管道实现异步批量消费调度任务
题目有点绕口 在现实的项目中这么搞的也不常见,里面牵涉多个知识点,整理下就当学习了。
pooky
2021/03/28
2.8K0
Go协程加管道实现异步批量消费调度任务
golang 的channels 行为
当我第一次使用 Go 的 channels 工作的时候,我犯了一个错误,把 channels 考虑为一个数据结构。我把 channels 看作为 goroutines 之间提供自动同步访问的队列。这种结构上的理解导致我写了很多不好且结构复杂的并发代码。
李海彬
2018/10/08
1.1K0
golang 的channels 行为
Golang+Redis分布式互斥锁
假设我们的某个业务会涉及数据更新,同时在实际场景中有较大并发量。流程:读取->修改->保存,在不考虑基于DB层的并发处理情况下,这种场景可能对部分数据造成不可预期的执行结果,此时可以考虑使用分布式锁来解决该问题
lestat
2021/05/04
3.2K0
发布订阅模式:使用 Go 实现简单的事件总线
事件驱动架构是计算机科学中一种高度可扩展的范例。它允许我们可以多方系统异步处理事件。
章为忠学架构
2020/01/22
6.5K2
Go语言的并发编程:Goroutines
Goroutines是Go语言中的轻量级线程,由Go语言运行时管理。与传统的操作系统线程相比,Goroutines占用的资源更少,启动速度更快。Goroutines通过Go关键字创建,并与通道(Channels)一起使用,实现高效的并发编程。
二一年冬末
2024/06/18
2340
go语言chan 和 routine活用
这里,我们以游戏中的一个情况为例。比如魔兽世界里的40人团队副本BOSS战,很多玩家同时攻击BOSS,BOSS的血量会进行频繁修改,我们要记录对BOSS的致命一击。常规 对BOSS血量的操作经行加锁,然后修改,每次攻击甚至还会判断怪物是否处于死亡状态以判断客户端是否能施放某个技能,但这样会让一个锁控制40个玩家的攻击操作,会导致攻击,技能等释放的不流畅。所以魔兽世界应该不是采用这种加锁的方式。为什么我这样说,因为做为了一个wower,我们经常会发现,实际BOSS,怪物已经死了,但我的寒冰剑还在半路,结果呢,
李海彬
2018/03/23
6880
Go - 从0学习Go的第一课
2.下载编辑器,Atom在github上是开源的,官网:https://github.com/atom
stark张宇
2023/03/07
3380
go的routine使用
package main import ( "fmt" "math/rand" "time" ) func p() { for i := 0; i < 2; i++ { fmt.Println(i) time.Sleep(time.Second * 1) } } func sell(c chan int) { for { num := <-c fmt.Println("sell", num, "bread") } } func produce(c chan int) { for { num := rand.Intn(10) t := time.Duration(num) fmt.Println("product", num, "bread") c <- num time.Sleep(time.Second * t) } } func main() { //go关键字+函数名即可启动一个go routine: go p() var input string fmt.Scanln(&input) fmt.Println("End") //go routine使用channel来进行routine间的通信 //显示结果也证明,channel的使用规则 var c chan int = make(chan int) go sell(c) go produce(c) var input2 string fmt.Scanln(&input2) fmt.Println("end") }
公众号-利志分享
2022/04/25
2340
A Bite of GoLang(下)
8. Goroutine 8.0、Goroutine介绍 协程 Coroutine 轻量级"线程" 上面的两个特征到底是什么意思呢?下面我们通过具体的事例详细的讲述一下, package main
盛国存
2018/05/14
1.2K1
A Bite of GoLang(下)
Go程序例子(45):Stateful Goroutines
在前一个示例中,我们使用了显式锁定和互斥锁来同步多个 goroutines 之间对共享状态的访问。另一个选择是使用 goroutines 和通道的内建同步功能来实现相同的结果。这种基于通道的方法与 Go 的理念一致,即通过通信来共享内存,并且每个数据片段只能由一个 goroutine 拥有。
用户11078756
2024/12/19
1100
Go程序例子(45):Stateful Goroutines
Go 并发实战 -- sync Cond
go中的sync.Cond也就是condition,是一个条件同步变量,与Java中Object的wait、notify、notifyAll方法或者Condition类的作用比较类似,如果有这方面的基础学习起来会非常简单。其实Java中的JUC包实现的可以是最丰富和易用的了,熟知JUC的话,学习其他语言的并发特性及工具的话会非常简单。
邹志全
2019/07/31
9490
golang 学习笔记
go语言完整的定义的变量的方法为 var 变量名 类型=值,var name string ="fuwei",可以简写为name:="fuwei"(这种只能在函数内使用,无法再包内使用),
付威
2021/05/06
1.1K0
Go实战--golang中使用RethinkDB(gorethink/gorethink.v3)
生命不止,继续go go go !!! 关于golang中操作数据库,曾经介绍了不少: Go实战–go语言操作sqlite数据库(The way to go) Go实战–go语言操作MySQL数据库
程序员的酒和故事
2018/03/12
1.9K0
Go实战--golang中使用RethinkDB(gorethink/gorethink.v3)
相关推荐
【go语言】Goroutines 并发模式(二)
更多 >
LV.5
安徽省刀锋网络科技有限公司后台开发
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档