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游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
Jan 23 Javascript
jquery购物车实时结算特效实现思路
Sep 23 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 Javascript
jQuery插件imgPreviewQs实现上传图片预览
Jan 15 Javascript
js事件处理程序跨浏览器解决方案
Mar 27 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
Sep 21 Javascript
JS只能输入正整数的简单实例
Oct 07 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
vue将对象新增的属性添加到检测序列的方法
Feb 24 Javascript
js获取html页面代码中图片地址的实现代码
Mar 05 Javascript
详解Nuxt.js中使用Element-UI填坑
Sep 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中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
一个简单的php路由类
2016/05/29 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
php-app开发接口加密详解
2018/04/18 PHP
js对象转json数组的简单实现案例
2014/02/28 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
在Python中编写数据库模块的教程
2015/04/29 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
Django框架自定义session处理操作示例
2019/05/27 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
物业管理个人自我评价
2013/11/08 职场文书
婚礼主持词开场白
2014/03/13 职场文书
《故乡》教学反思
2014/04/10 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书