关于前端:JS中的字符串前后补全补位

在日常我的项目中常常会遇到须要对字符串补位的操作,比方

  • 向前补0:例如日期,常常会须要YYYY-MM-DD 的格局,
    如果不应用日期库,间接获取月份和日期后面是没有0的,须要手动拼接字符串。

刚巧明天要搞日历组件,后面缺一个0总感觉少了点感觉,过后懒得本人写补全了,想着百度一个吧,就搜到了张鑫旭大佬的这篇文章 《JS字符串补全办法padStart()和padEnd()简介》,而后就惊了,原来早在4年前 JS 就原生反对了前后补全了(我这几年在干嘛😢)


String.padStart()

如果是以前的话咱们就会,先判断一下是参否入小于10,而后再去补全字符串 "0",而当初就不须要了间接用 .padStart() 就行,他会本人判断输出的字符串长度是否小于指定长度再去补全。
而且用法就很简略啊,如果你要在字符串后面补位像上面这样应用就行了:

let month = new Date().getMonth() + 1
month = String(month).padStart(2, '0') // 其实第二位应用数字 0 也是能够的

console.log(month)
// 06

String.padEnd()

padStart() 一样,间接这样应用就能够了 '字符串'.padEnd(7,'补全') 就会把字符串补全为 字符串补全补全,其实我始终没想到向后补位的一个具体示例,这边我应用张大佬的例子:

在JS前端咱们解决工夫戳的时候单位都是ms毫秒,然而,后端同学返回的工夫戳则不一样是毫秒,可能只有10位,以s秒为单位。所以,咱们在前端解决这个工夫戳的时候,保险起见,要先做一个13位的补全,保障单位是毫秒。应用示意:

 timestamp = +String(timestamp).padEnd(13, '0');

对于兼容性 😫

作为一个ES2017(ES8) 的内容,兼容IE必定是不必思考的,其它古代浏览器都是反对 padStartpadEnd 的。
如果肯定要思考兼容性问题的话,能够应用 lodash 库中的 _.padStart_.padEnd 来实现前后补全,始终能够兼容到IE9。当然也能够和张大佬一样应用垫片(polyfill)来实现,能够兼容到更低版本的IE


📚 参考文档:

String.prototype.padStart() – JavaScript | MDN
String.prototype.padEnd() – JavaScript | MDN

JS字符串补全办法padStart()和padEnd()简介 « 张鑫旭-鑫空间-鑫生存

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据