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 相关文章推荐
JAVASCRIPT对象及属性
Feb 13 Javascript
懒就要懒到底——鼠标自动点击(含时间判断)
Feb 20 Javascript
用JAVASCRIPT如何给<textarea></textarea>赋值
Apr 20 Javascript
JQuery 风格的HTML文本转义
Jul 01 Javascript
JavaScript 组件之旅(二)编码实现和算法
Oct 28 Javascript
JQuery 操作/获取table具体代码
Jun 13 Javascript
Window.Open如何在同一个标签页打开
Jun 20 Javascript
Javascript使用SWFUpload进行多文件上传
Nov 16 Javascript
vue 组件中添加样式不生效的解决方法
Jul 06 Javascript
微信小程序顶部导航栏滑动tab效果
Jan 28 Javascript
用jQuery实现抽奖程序
Apr 12 jQuery
vue实现几秒后跳转新页面代码
Sep 09 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
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
专科毕业生求职简历的自我评价
2013/10/12 职场文书
股权投资意向书
2014/04/01 职场文书
班级出游活动计划书
2014/08/15 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
给上级领导的感谢信
2015/01/22 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
环境卫生整治简报
2015/07/20 职场文书