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 & DHTML 实例编程(教程)基础知识
Jun 02 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
javascript自定义startWith()和endWith()的两种方法
Nov 11 Javascript
jquery实现从数组移除指定的值
Jun 24 Javascript
分享15个大家都熟知的jquery小技巧
Dec 02 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
vue绑定class与行间样式style详解
Aug 16 Javascript
JavaScript中各数制转换全面总结
Aug 21 Javascript
简述vue中的config配置
Jan 23 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
Aug 06 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安装问题
2006/10/09 PHP
php GD绘制24小时柱状图
2008/06/28 PHP
PHP实现文件下载详解
2014/11/27 PHP
js汉字转拼音实现代码
2013/02/06 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
python中wheel的用法整理
2020/06/15 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
Android interview questions
2016/12/25 面试题
类和结构的区别
2012/08/15 面试题
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
小学生新学期寄语
2014/01/19 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
买卖协议书范本
2014/04/21 职场文书
给学校建议书范文
2014/05/13 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
学生违反校规检讨书
2014/10/28 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
Python数据类型最全知识总结
2021/05/31 Python
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript