本文共 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/