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 相关文章推荐
cookie 最近浏览记录(中文escape转码)具体实现
Jun 08 Javascript
深入理解JavaScript高级之词法作用域和作用域链
Dec 10 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
React-router 4 按需加载的实现方式及原理详解
May 25 Javascript
JS使用正则表达式验证身份证号码
Jun 23 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
详解从新建vue项目到引入组件Element的方法
Aug 29 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
Jan 23 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
Feb 10 Javascript
Webpack的dll功能使用
Jun 28 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
Apr 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
探讨方法的重写(覆载)详解
2013/06/08 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
JavaScript 调试器简介
2009/02/21 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
python制作websocket服务器实例分享
2016/11/20 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
python通过zabbix api获取主机
2018/09/17 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
python实现大转盘抽奖效果
2019/01/22 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
大学生学习党课思想汇报
2014/01/03 职场文书
青年文明号服务承诺
2014/03/31 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
python实现会员管理系统
2022/03/18 Python