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 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
JS 日期验证正则附asp日期格式化函数
Sep 11 Javascript
JavaScript地图拖动功能SpryMap的简单实现
Jul 17 Javascript
cookie中的path与domain属性详解
Dec 18 Javascript
JavaScript中的apply和call函数详解
Jul 20 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
jquery.validate表单验证插件使用方法解析
Nov 07 Javascript
webpack 打包压缩js和css的方法示例
Mar 20 Javascript
浅谈Redux中间件的实践
Jul 27 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
Jul 11 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
JavaScript中的对象与JSON
2015/07/03 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python中处理unchecked未捕获异常实例
2015/01/17 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
python处理csv中的空值方法
2018/06/22 Python
flask框架视图函数用法示例
2018/07/19 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
使用Python实现音频双通道分离
2020/12/25 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
课堂教学改革实施方案
2014/03/17 职场文书
研究生导师评语
2014/12/31 职场文书
法院个人总结
2015/03/03 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
介绍信范文大全
2015/05/07 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis