JS字符串补全方法padStart()和padEnd()


Posted in Javascript onMay 27, 2020

这个方法无意中看到的,感觉还是蛮实用的,特此分享一波。我想大家都会有遇到将时间戳转换成时间格式的时候,时间或日期不足2位的前面补0。有了今天说的这个东西,就又可以少写几行代码了,大家在项目中遇到类似场景可以去使用感受下。

ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。

padStart() padEnd() 方法用另一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。
padStart() 从当前字符串的开始(左侧) 位置填充。
padEnd() 从当前字符串的末尾(右侧)开始填充。

语法:

str.padStart(targetLength [, padString])
str.padEnd(targetLength [, padString])

padStart() 和 padEnd() 一共接受两个参数,第一个参数 targetLength 是当前字符串需要填充到的目标长度,第二个参数 padString 是用来填充的字符串,缺省值为" "。

返回值:

在原字符串开头填充指定的填充字符串直到目标长度所形成的新字符串。

如果 targetLength 小于当前字符串的长度,则字符串补全不生效,返回当前字符串本身。

'abc'.padStart(1, 'd');     // "abc"
'abc'.padEnd(1, 'd');     // "abc"

如果 targetLength 小于用来填充的字符串长度与原字符串的长度之和,则截掉超出位数的补全字符串。

'abc'.padStart(6,"123456");    // "123abc"
'abc'.padEnd(6, "123456");    // "abc123"

如果省略第二个参数 padString,即使用空格补全长度。

'abc'.padStart(10);     // "    abc"
'abc'.padEnd(10);     // "abc    "

如果 padString 长度过长,则会删除后面多出的字符串。

'abc'.padStart(5, "foo");    // "foabc"
'abc'.padEnd(5, "foo");     // "abcfo"

应用:

  • 补全指定位数,如格式化时间或日期时,个位数补0
  • 提示字符串格式 字符串拼接

示例:

当我们使用时间戳并转换成 yyyy-mm-dd hh:mm:ss 的格式。

function dataFormat(data) {
  const dt = new Date(data * 1000) //注:如果是13位时间戳不用*1000 
  
  const y = dt.getFullYear()
  const m = (dt.getMonth() + 1 + '').padStart(2, '0')
  const d = (dt.getDay() + '').padStart(2, '0')
​
  const hh = (dt.getHours() + '').padStart(2, '0')
  const mm = (dt.getMinutes() + '').padStart(2, '0')
  const ss = (dt.getSeconds() + '').padStart(2, '0')
​
  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}

因着此方法是ES6新增方法,部分浏览器不支持,会有兼容性问题。 查看 Polyfill 创建的String.prototype.padStart() / String.prototype.padEnd() 方法。

// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd
if (!String.prototype.padEnd) {
  String.prototype.padEnd = function padEnd(targetLength,padString) {
    targetLength = targetLength>>0; //floor if number or convert non-number to 0;
    padString = String((typeof padString !== 'undefined' ? padString: ''));
    if (this.length > targetLength) {
      return String(this);
    }
    else {
      targetLength = targetLength-this.length;
      if (targetLength > padString.length) {
        padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed
      }
      return String(this) + padString.slice(0,targetLength);
    }
  };
}

到此这篇关于JS字符串补全方法padStart()和padEnd()的文章就介绍到这了,更多相关JS padStart() padEnd()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 Javascript
innerText和innerHTML 一些问题分析
May 18 Javascript
jquery退出each循环的写法
Feb 26 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
Oct 29 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
May 19 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
JS设计模式之策略模式概念与用法分析
Feb 05 Javascript
在vue中使用公共过滤器filter的方法
Jun 26 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 #Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
May 27 #Javascript
使用JavaScript获取Django模板指定键值数据
May 27 #Javascript
基于Vue CSR的微前端实现方案实践
May 27 #Javascript
Node.js API详解之 vm模块用法实例分析
May 27 #Javascript
jQuery实现鼠标滑动切换图片
May 27 #jQuery
js验证账户名是否重复
May 26 #Javascript
You might like
PHP4实际应用经验篇(8)
2006/10/09 PHP
微信支付开发发货通知实例
2016/07/12 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
php实现简易计算器
2020/08/28 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
详解webpack介绍&安装&常用命令
2017/06/29 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
python使用socket向客户端发送数据的方法
2015/04/29 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
详解Django配置JWT认证方式
2020/05/09 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
生产车间班组长岗位职责
2014/01/06 职场文书
服务承诺口号
2014/05/22 职场文书
办公用品质量保证书
2015/05/11 职场文书
企业党建工作总结2015
2015/05/26 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫
nginx 添加http_stub_status_module模块
2022/05/25 Servers