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中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 Javascript
js对象的比较
Feb 26 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
node.js中的fs.stat方法使用说明
Dec 16 Javascript
BootStrap中Tab页签切换实例代码
May 30 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
JavaScript定时器制作弹窗小广告
Feb 05 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
Oct 11 Javascript
关于ES6箭头函数中的this问题
Feb 27 Javascript
JS实现中英文混合文字溢出友好截取功能
Aug 06 Javascript
在微信小程序中使用vant的方法
Jun 07 Javascript
Javascript中async与await的捕捉错误详解
Mar 03 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 include任意文件或URL介绍
2014/04/29 PHP
php 中的closure用法详解
2017/06/12 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
php语法检查的方法总结
2019/01/21 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
Python不规范的日期字符串处理类
2014/06/10 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
Python自动调用IE打开某个网站的方法
2015/06/03 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
python让列表倒序输出的实例
2018/06/25 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
社区包粽子活动方案
2014/01/21 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL