记录一下字符串常用方法
1、length
返回字符串的长度
let str = 'abc'
str.length // 3
2、indexOf(str, position)
返回字符串中指定文本首次出现的索引(位置)
// str 要搜索的子字符串
// position 搜索的起始位置 默认为0 ,小于0时按0取值,大于字符串长度时不会搜索字符串
let str = 'abc'
str.indexOf('a') // 0
2-1、类似方法 lastIndexOf(str, position)
返回指定文本在字符串中最后一次出现的索引
// 参数同上
let str = 'abca'
str.lastIndexOf('a') // 3
PS: 如果未找到文本,indexOf()和lastIndexOf()均返回 -1,两个函数都接收第二个参数 为搜索起始位置
2-2、类似方法 search(regexp)
用于在 String 对象中执行正则表达式的搜索,寻找匹配项
// regexp 一个正则表达式对象
let str = 'abca'
str.search('a') // 0
两种方法,indexOf() 与 search(),是相等的。
这两种方法是不相等的。区别在于:
①、search() 方法没有第二个参数。
②、indexOf() 方法无法设置更强大的搜索值(正则表达式)
2-3、类似方法 includes(str, position)
现代更常用
方法执行区分大小写的搜索,以确定是否可以在一个字符串中找到另一个字符串,返回true或false
// str, position 参数同 indexOf
3、replace(pattern, replacement)
方法返回一个新字符串,其中一个、多个或所有匹配的 pattern 被替换为 replacement;
字符串模式只会被替换一次。要执行全局搜索和替换,请使用带有 g 标志的正则表达式或使用replaceAll。
// pattern 可以是字符串或 `RegExp`
// replacement 可以是字符串或一个在每次匹配时调用的 函数
let str = 'Abcd'
str.replace(/a/i, 'hi,') // hi,bcd
3-1、类似方法 replaceAll(pattern, replacement)
// pattern 如果是一个正则表达式则必须设置全局(`g`)标志 否则会抛出 `TypeError`
// replacement 可以是字符串或一个在每次匹配时调用的 函数
const paragraph = "I think Ruth's dog is cuter than your dog!";
console.log(paragraph.replaceAll('dog', 'monkey'));
// Expected output: "I think Ruth's monkey is cuter than your monkey!"
4、repeat(count)
返回一个新字符串,其中包含指定数量的所调用的字符串副本,这些副本连接在一起
// count 介于 `0` 和 `+Infinity`之间的整数
const mood = 'Happy! ';
console.log(`I feel ${mood.repeat(3)}`);
// Expected output: "I feel Happy! Happy! Happy! "
5、slice(start, end)
提取字符串的某个部分并在新字符串中返回被提取的部分(不改变原字符串)
如果某个参数为负,则从字符串的结尾开始计数
如果省略第二个参数,则该方法将裁剪字符串的剩余部分
// start 要返回的子字符串中 包含 的第一个字符的索引
// end 要返回的子字符串中 排除 的第一个字符的索引
let str = 'abcd'
let res = str.slice(0, 2) // ab
// str abcd
let ret = str.slice(-2, -1) // c
let req = str.slice(1) // bcd
负值位置不适用 Internet Explorer 8 及其更早版本
5-1、类似方法 substring(start, end)
返回该字符串从起始索引到结束索引(不包括)的部分,如果未提供结束索引,则返回到字符串末尾的部分。
类似于slice(),不同之处在于无法接收负的索引
// 参数同上
// substr(start, length) 返回给定长度字符串, 已弃用!
6、split(separator, limit)
方法接受一个模式,通过搜索模式将字符串分割成一个 有序 的子串列表,将这些子串放入一个数组,并返回该数组。
// separator 分割标识
// limit 指定数组中包含的子字符串的数量限制
// 如果在达到极限之前就达到了字符串的末端,那么数组包含的条目可能少于 `limit`
// 如果 `limit` 为 `0`,则返回 `[]`
let str = 'abcd'
str.split('') // [a, b, c, d]
7、trim()
从字符串的两端移除空白字符,并返回一个 新的 字符串,而不会修改原始字符串
const str = " foo ";
console.log(str.trim()); // 'foo'
7-1 类似方法 trimStart()
从字符串的开头移除空白字符,并返回一个新的字符串, trimLeft() 是该方法的别名
7-2 类似方法 trimEnd()
从字符串的结尾移除空白字符,并返回一个新的字符串, trimRight() 是该方法的别名
8、charAt(index)
方法返回一个由给定索引处的单个 UTF-16 码元构成的新字符串
// index 要返回的字符的索引,从零开始。会被转换为整数——`undefined` 会被转换为 0
let str = 'abcd'
str.charAt(0) // a
8-1、类似方法 charCodeAt(index)
返回一个整数,表示给定索引处的 UTF-16 码元,其值介于 0 和 65535 之间
// 参数同上
let str = 'abcd'
str.charCodeAt(str[0]) // 97
8-2、类似方法 codePointAt(index)
返回一个非负整数,该整数是从给定索引开始的字符的 Unicode 码位值。请注意,索引仍然基于 UTF-16 码元,而不是 Unicode 码位
// 参数同上
let str = 'abcd'
str.codePointAt(str[0]) // 97
9、startsWith(str, position)
方法用来判断当前字符串是否以另外一个给定的子字符串开头,并根据判断结果返回 true 或 false。
// str 要在该字符串开头搜索的子串。不能是 正则表达式
// position 搜索起始位置 默认为0
const str1 = 'Saturday night plans';
console.log(str1.startsWith('Sat'));
// Expected output: true
console.log(str1.startsWith('Sat', 3));
// Expected output: false
9-1 类似方法 endsWith(str, position)
判断一个字符串是否以指定字符串结尾,如果是则返回 true,否则返回 false
// 参数同上
10、toLowerCase()
将字符串转换为小写形式
10-1、类似方法 toUpperCase()
将字符串转换为大写形式
10-2、类似方法 toLocaleLowerCase()
方法会根据特定区域设置的大小写映射规则,将字符串转换为小写形式并返回。
10-3、类似方法 toLocaleUpperCase()
方法会根据特定区域设置的大小写映射规则,将字符串转换为大写形式并返回。