博客
关于我
es6字符串扩展
阅读量:711 次
发布时间:2019-03-21

本文共 2089 字,大约阅读时间需要 6 分钟。

字符串是编程中重要的数据类型,只有熟练掌握字符串操作才能更高效地开发程序。JS字符串的特性总是落后于其它语言,例如,直到 ES5 中字符串才获得了 trim() 方法。而 ES6 则继续添加新功能以扩展 JS 解析字符串的能力。本文将详细介绍 ES6 中字符串扩展的重要方法。

子串识别

自从 JS 引入了 indexOf() 方法以来,开发者们就使用它来识别字符串是否存在于其它字符串中。ES6 包含了以下三个方法来满足这类需求:includes()startsWith()endsWith()

includes()

该方法在给定文本存在于字符串中的任意位置时会返回 true,否则返回 false。它接受两个参数:需要搜索的文本和可选的起始位置索引。当提供第二个参数时,搜索会从指定位置开始;如果不提供,搜索将从字符串起始处开始。

startsWith()

该方法在给定文本出现在字符串起始处时返回 true,否则返回 false。同样接受两个可选参数:文本和起始位置。如果不提供起始位置,默认从字符串开头开始搜索。

endsWith()

该方法在给定文本出现在字符串结尾处时返回 true,否则返回 false。它也接受两个可选参数:文本和起始位置。若不提供起始位置,默认从字符串末尾开始搜索。

上述方法可以帮助开发者快速判断字符串中是否存在特定子串,但对于更复杂的查找任务,可能需要结合使用 indexOf()lastIndexOf() 来获取子串的确切位置。需要注意的是,如果将非字符串类型(如正则表达式)传递给 startsWith()endsWith()includes(),该方法会抛出错误。但 indexOf()lastIndexOf() 会自动将正则表达式转换为字符串来执行搜索。

字符串重复

ES6 为字符串引入了 repeat() 方法,该方法接受一个数字参数,表示重复次数,然后返回一个新由原始字符串重复指定次数组成的字符串。这个方法在代码格式化(如生成缩进或文本块)中特别有用。

例如:

console.log("x".repeat(3)); 返回 "xxx"
console.log("hello".repeat(2)); 返回 "hellohello"
console.log("abc".repeat(4)); 返回 "abcabcabcabc"

如果参数是小数,会取整处理。例如,console.log('na'.repeat(2.9)); 会返回 "nana" 而不是 "nannna"。此外,如果参数为负数、无穷大值或 NaN,会抛出 RangeError:console.log('na'.repeat(-1)); 会显示 "RangeError: Invalid count value" đổi

需要注意的是,如果参数是 NaN,重复的结果将为空字符串 "">。而如果参数是小数且介于 0 到 -1 之间,经过数学运算后会变为 0,因此结果也是空字符串。

最后,如果将非数值类型(如字符串)传递给 repeat() 方法,会先尝试将其转换为数字。如果转换失败,则将其视为 0,因此结果字符串将为空。例如,console.log('na'.repeat('na')); 会返回 "">,而 console.log('na'.repeat('3')); 则会返回控制台输出的 "nanana"。

字符串补全

ES2017 引入了补全字符串的功能,通过 padStart()padEnd() 方法可以在字符串的前置或后置补充字符以达到指定的最小长度。这个方法可以广泛用于数据格式化、占位符处理和字符串库存管理等场景。

padStart()

该方法接受两个参数:目标最小长度和用来补充的字符串。如果原字符串的长度小于目标最小长度,则会在字符串的前部补充给定的字符串。例如,"x".padStart(5, 'ab'); 会返回 "ababx"。如果目标最小长度与原字符串的长度相同或更长,返回原字符串。当不提供第二个参数时,默认用空格补充。

padEnd()

类似于 padStart(),不过它在字符串末尾进行补充。例如,"x".padEnd(5, 'ab'); 会返回 "xabab"。同样,当原字符串的长度大于或等于目标最小长度时,返回原字符串,不需要补充。

需要注意的是,如果指定补充字符串的长度与目标最小长度之和超过目标最小长度,则会截断多余的部分。这对于生成固定长度的字符串非常有用。例如,"abc".padStart(10, '0123456789'); 会返回 "0123456abc"。

在实际应用中,这些方法可以用来为数值补零或添加前置标识符。例如,生成带前置零的数值字符串:'1'.padStart(10, '0'); 返回 "0000000001";或者为日期格式添加填充字符:'09-12'.padStart(10, 'YYYY-MM-DD'); 返回 "YYYY-09-12"。

转载地址:http://zrcrz.baihongyu.com/

你可能感兴趣的文章
IEEE Fellow、AI大牛田奇加入华为云!他为何而来?“加速AI基础研究落地”
查看>>
对曲线的坐标的积分的斯托克斯公式+参数定积分法
查看>>
幂函数
查看>>
200118堆排序(Heap Sort)
查看>>
剑指Offer--Java--数字在排序数组中出现的次数
查看>>
剑指Offer--Java--字符串中第一个只出现一次的字符
查看>>
[gym102832L][CCPC2020 长春站 L]Coordinate Paper
查看>>
阶乘分解 (算法竞赛进阶指南 P136,质因数分解)
查看>>
官方win10重装系统
查看>>
2021-04-13 Python 随机列表、集合、元组、字典的生成和排序
查看>>
hslogic_基于FPGA的混沌加密
查看>>
SAR图像超分辨技术
查看>>
拉道radau伪谱算法
查看>>
fpga工程师笔试题
查看>>
神经网络遗传算法函数极值寻优-非线性函数极值
查看>>
emd分解matlab程序
查看>>
简单的记事本日志类
查看>>
map容器
查看>>
基于 React hooks + Typescript + Cesium 实现泛光尾迹线
查看>>
Java版取色器(7)——界面简单装饰
查看>>