随着 ES11 的发布,字符串操作得到了更多的支持和更新。本文将会介绍多种方法来处理字符串操作,涉及到新的 ES11 特性,也会涉及到旧的方法,让你对字符串操作有更全面的掌握。
1. 标准操作
最基本的字符串操作是通过字符串直接去修改和检索,比如:
-- -------------------- ---- ------- ----- --- - ------ ------- -- -- --------------------- -- - -- -- -------------------- -------- -- ------ ----- -- -- ------------- -- ---------------
这些操作是最常见的字符串操作,我们经常会使用到。
2. 新的 ES11 特性
ES11 中增加了字符串的几个特性,它们可以更加方便地处理字符串操作。
2.1. String.prototype.replaceAll()
在 ES6 中,我们可以使用 String.prototype.replace()
来替换字符串中的字符。但是,这种替换只会影响到第一次匹配的字符。如果你想要替换所有匹配的字符串,你可以多次调用 replace()
。
在 ES11 中,我们可以使用 String.prototype.replaceAll()
来替换所有匹配的字符串,如下:
const str = 'hello world hello world'; // 替换所有匹配的字符串 str.replaceAll('world', 'moon'); // 'hello moon hello moon'
2.2. String.prototype.matchAll()
在 ES6 中,我们可以使用 String.prototype.match()
根据正则表达式获取字符串中的子串。但是,这种方法只会返回第一个匹配的子串。如果你想获取所有匹配的子串,你可以多次调用 match()
。
在 ES11 中,我们可以使用 String.prototype.matchAll()
来获取所有匹配的子串。
-- -------------------- ---- ------- ----- --- - --- ----- -- ------- -- ------------- ----- ------- - --------------------- -------- --- ------ ----- -- -------- - --------------------- ---------- -- - ----- -- - ----- -
2.3. String.prototype.trimStart()
和 String.prototype.trimEnd()
在 ES6 中,我们可以使用 String.prototype.trim()
来去掉字符串两端的空格字符。但是,在某些情况下你想要只去掉字符串开头的空格字符或者只去掉字符串结尾的空格字符。
在 ES11 中,我们可以使用 String.prototype.trimStart()
来去掉字符串开头的空格字符,使用 String.prototype.trimEnd()
来去掉字符串结尾的空格字符。
const str = ' hello world '; // 去掉开头的空格 str.trimStart(); // 'hello world ' // 去掉结尾的空格 str.trimEnd(); // ' hello world'
2.4. String.prototype.repeat()
在 ES6 中,我们可以使用 String.prototype.concat()
或者字符串模板来重复一个字符串。但是,在某些情况下你希望能够直接使用字符串重复。
在 ES11 中,我们可以使用 String.prototype.repeat()
来重复字符串。
const str = 'hello '; // 字符串重复 str.repeat(3); // 'hello hello hello '
3. ES6 之前的方法
除了上述的 ES11 方法之外,我们也可以使用 ES6 之前的方法来处理字符串操作。
3.1. String.prototype.slice()
String.prototype.slice()
可以返回原字符串的子字符串,可以接收两个参数,起始位置和结束位置(不是包含在返回字符串内),可以传入负数,代表相对于字符串末尾的位置。
const str = 'hello world'; // 获取一个完整的子字符串 str.slice(0, 11); // 'hello world' // 从末尾开始获取一个完整的子字符串 str.slice(-11); // 'lo world'
3.2. String.prototype.substr()
String.prototype.substr()
可以返回从指定位置开始的指定长度的字符串。可以接收两个参数,起始位置和返回字符串的长度,可以传入负数,代表相对于字符串末尾的位置。
const str = 'hello world'; // 获取一个子字符串,指定开始位置和长度 str.substr(0, 5); // 'hello' // 从末尾开始获取一个子字符串,指定开始位置和长度 str.substr(-5); // 'world'
3.3. String.prototype.split()
String.prototype.split()
可以将一个字符串分割成子字符串的数组。可以接收一个参数,代表分割子字符串的位置,也可以接收一个正则表达式,代表分割子串的规则。
const str = 'hello world'; // 将字符串根据空格分割成一个数组 str.split(' '); // ['hello', 'world'] // 将字符串根据 e 分割成一个数组 str.split(/e/); // ['h', 'llo world']
4. 总结
上述的方法是经常使用的字符串操作。ES11 中新增的字符串方法更加方便,也可以使用 ES6 之前的方法来处理字符串。如果你想对字符串操作有更深入的认识,建议多使用和练习这些方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64531875968c7c53b0788d6f