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 相关文章推荐
快速保存网页中所有图片的方法
Jun 23 Javascript
取得传值的函数
Oct 27 Javascript
JS 显示当前日期与时间的代码
Mar 24 Javascript
js中flexible.js实现淘宝弹性布局方案
Jun 23 Javascript
js替换字符串中所有指定的字符(实现代码)
Aug 17 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
Aug 23 Javascript
js前端面试题及答案整理(一)
Aug 26 Javascript
js返回顶部实例分享
Dec 21 Javascript
Bootstrap风格的zTree右键菜单
Feb 17 Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 Javascript
学习RxJS之JavaScript框架Cycle.js
Jun 17 Javascript
layui实现左侧菜单点击右侧内容区显示
Jul 26 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
进一步探究Python中的正则表达式
2015/04/28 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
python pandas时序处理相关功能详解
2019/07/03 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
求职信模板怎么做
2014/01/26 职场文书
出纳员岗位责任制
2014/02/11 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
2014年度安全工作总结
2014/12/04 职场文书
地道战观后感300字
2015/06/04 职场文书
物业管理交接协议书
2016/03/24 职场文书