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

你可能感兴趣的文章
苹果企业签名首要考虑的真的是价格因素么?别傻了
查看>>
深度!苹果企业签名掉签的真正原因
查看>>
关于scanf函数在VS中使用的问题
查看>>
操作符初识
查看>>
C语言 - 计算n的阶乘(n!)
查看>>
c编程常见错误-C允许初始化列表出现多余的逗号 不影响
查看>>
c编程常见错误-函数声明没有参数类型声明
查看>>
c编程常见错误-函数调用没写括号
查看>>
C++类与对象
查看>>
打造微信小程序之人脸属性(ubuntu16.04+tensorflow)
查看>>
计算机网络复习笔记----杂记
查看>>
计算机网络复习笔记---网络层
查看>>
JavaScript按值传递与按共享传递
查看>>
pip源
查看>>
MongoDB复制集安全认证
查看>>
设置eclipse工作区的编码方式和设置jsp文件的编码方式
查看>>
eclipse快速建立有参构造方法
查看>>
IDEA配置maven环境
查看>>
IDEA不使用骨架创建java项目
查看>>
mybatis中resultMap结果返回类型
查看>>