继上一篇《数组篇》。本文整理了常用的字符串操作方法,适合初学者入门和开发者速查。
方法 | 描述 | 示例(const str = ‘orange’) |
---|---|---|
length | 获取字符串长度 | str.length // 6 (length是属性,不是方法) |
split(‘分隔符’) | 用来将字符串拆分成数组 | str.split('') // ['o', 'r', 'a', 'n', 'g', 'e'] |
substring(start [, end]) | 用于字符串截取,左闭右开 (end可以省略,表示截取到字符串末尾) | str.substring(2,4) // an str.substring(2) // ange |
slice(start [, end]) | 用于字符串截取,左闭右开 | 类似substing |
startsWith(str [, startIdx]) | 检测是否以某字符串开头,返回true/false 从startIdx位置开始检测 | str.startsWith('ora') // true str.startsWith('a', 2) // true |
endsWith(str [, endIdx]) | 检测是否以某字符串结尾,返回true/false endIdx指定末尾位置 (endInx是想要检测的索引+1) | str.endsWith('ge') // true str.endsWith('g', 5) // true |
includes(str [, index]) | 判断字符串是否包含另一个字符串,返回true/false index表示开始检索的位置 | str.includes('range') // true |
indexOf(str [, index]) | 检测是否包含某字符串 返回第一次出现的位置索引值 | str.indexOf('range') // 1 |
toUpperCase() toLowerCase() | 用于将字母转换成大写 用于将字母转换成小写 | str.toUpperCase() // ORANGE |
replace(oldStr, newStr) | 将字符串中的oldStr替换成newStr 默认只替换第一个匹配项 全部替换推荐 replaceAll 或者正则的‘g’ | str = 'a orange' str.replace('a', 'b') // b orange str.replaceAll('a', 'b') // b orbnge str.replace(/a/g, 'b') // b orbnge |
trim() | 从字符串的两端移除空白字符 修改一端可以使用 trimStart() 或 trimEnd() | – |
repeat(n) | 表示将字符串重复n次 | str.repeat(2) // orangeorange |
match(regExp) | 用于查找字符串,支持正则匹配 返回数组(包括所有匹配的str),没有返回 null | – |
补充
substring和slice的区别
substring
和slice
都用于截取字符串,且都接收两个参数:起始位置和结束位置,表示截取从起始位置到结束位置之间的字符串(左闭右开)。如果省略了第二个参数(结束位置),则默认截取到字符串尾部。
它们的主要区别如下:
slice
:支持负数参数。正数表示从字符串前面开始计数,负数表示从字符串末尾倒数计数。
const str = 'orange'
// o: 0/-6; r: 1/-5; a: 2/-4; n: 3/-3; g: 4/-2; e: 5/-1;
console.log(str.slice(1, 4)) // 'ran'
console.log(str.slice(-4, -1)) // 'ang'
console.log(str.slice(-1, -4)) // ''
console.log(str.slice(1, -1)) // 'rang'
substring
:不支持负数参数。若传入负数,会被自动转换为0
。同时,substring
会自动将较小的参数作为起始位置,较大的作为结束位置。
const str = 'orange'
console.log(str.substring(1, 4)) // 'ran'
console.log(str.substring(1, -1)) // 'o',相当于(0,1)
console.log(str.substring(-1, -4)) // '',相当于(0,0)