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 相关文章推荐
类之Prototype.js学习
Jun 13 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
May 19 Javascript
php基于redis处理session的方法
Mar 14 Javascript
javascript 继承学习心得总结
Mar 17 Javascript
详细谈谈AngularJS的子级作用域问题
Sep 05 Javascript
jQuery实现二维码扫描功能
Jan 09 Javascript
canvas绘制一个常用的emoji表情
Mar 30 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
vue.js使用3DES加密的方法示例
May 18 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
Nov 30 Javascript
vue改变循环遍历后的数据实例
Nov 07 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
Oct 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性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
Python实现SVN的目录周期性备份实例
2015/07/17 Python
Python中django学习心得
2017/12/06 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
使用npy转image图像并保存的实例
2020/07/01 Python
python中PyQuery库用法分享
2021/01/15 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
new修饰符是起什么作用
2015/06/28 面试题
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
葡萄牙语专业个人求职信
2013/12/10 职场文书
给女朋友的道歉信
2014/01/10 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
学生会辞职信
2015/03/02 职场文书
兴趣班停课通知
2015/04/24 职场文书
汉字听写大会观后感
2015/06/12 职场文书
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python