博客
关于我
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/

你可能感兴趣的文章
微信小程序中的自定义组件
查看>>
uniapp中的生物认证(指纹、人脸识别)
查看>>
HTML表单跨行跨列操作
查看>>
框架结构标签 frameset
查看>>
Eclipse-更改Eclipse中SVN用户名及密码
查看>>
使用div技术写出商城首页
查看>>
Java
查看>>
Redis
查看>>
Maven-初级
查看>>
IDEA-新建Maven项目添加依赖后还是报错
查看>>
IDEA-调出Maven导航栏
查看>>
Oracle-子查询和集合运算
查看>>
Luence
查看>>
Svn
查看>>
Mybatis-PageHelper分页插件-Spring
查看>>
springboot-配置文件
查看>>
springboot-web开发
查看>>
springboot-开发热部署
查看>>
springcloud-微服务
查看>>
SpringSecurity-3
查看>>