字符串操作方法汇总

# 字符串操作方法汇总

# 1. concat

可以用于拼接多个字符串,不过用+更方便。

不修改调用该方法的字符串。

str.concat(str1 , str2 , str3 , ...)

# 2. slice、subStr、subString

都可以只接收一个参数,此时都是截取到末尾。

str.slice(startIndex , endIndex)    // 不包含endIndex
str.subString(startIndex , endIndex)    // 不包含endIndex
str.subStr(startIndex , length)    // 开始索引 , 返回的字符串长度

参数为负值的情况记忆方法:

subString从字面意思看是子字符串,那么开始索引和结束索引不能为负,所以如果为负都会转为0,两都为负就返回空字符串。

slice字面意思为切片,无论如何都会给你切(python切片就可以是负值),所以如果为负都会转换为长度加上负值。

subStr这个做个折中,第一个参数为负就加上长度,第二个为负就变成0.

# 3. indexOf、lastIndexOf

接收一个字符串,接收一个可选的第二参数表示开始搜索的位置索引。

找到返回索引,找不到返回-1。(记忆为什么返回-1而不是undefined或null,因为正常找到返回的索引是数字,统一一下就用-1)

利用第二参数可以实现找出字符串中所有传入字符的索引。

# 4. startsWith、endsWith、includes

es6提供的三个新方法。

返回一个布尔值,表示是否包含传入的字符串。

str.startsWith(str1 [, startIndex])    // str开头是否包含
str.endswith(str2)    // str结尾是否包含
str.includes(str3 [, startIndex])    // 整个字符串是否包含

记忆一下函数名称:动词后都有个's',嗯,第三人称单数哈哈哈

第二个参数传入负数都相当于没传。

# 5. trim、trimLeft、trimRight

清除字符串前后、前、后的空格。

# 6. repeat

str.repeat(number)    // 把str复制number次后拼接起来

# 7. padStart、padEnd

str.padStart(length [, str1])
str.padEnd(length [, str1])

# 8. ...

由于字符串实现了@@iterator,可以用解构操作符解构,也可以用for of遍历。

let arr = [...str]


let strIterator = str[Symbol.iterator]()    // 获得迭代器
strIterator.next()

# 9. toUpperCase、toLowerCase、toLocaleUpperCase、toLocaleLowerCase

toUpperCasetoLowerCase没有参数,分别把字符串转为大写和小写

toLocaleUpperCasetoLocaleLowerCase可以选择性接收一个locale或locale数组,指定转换规则,默认转换规则是根据主机的语言来确定,因为有些地区语言比较特殊,所以用这两个方法会比较安全一些。但是有没有副作用不知道,后面查查资料。

# 10. match、search、replace

match顾名思义:匹配,所以可以传正则,返回和exec一样返回的对象

let res = str.match(正则表达式字符串或RegExp对象)

// 返回一个对象,如下形式,和正则的exec返回的对象一样,可以猜想里面就是用的正则exec
res = {
    index: ,
    arr: ['xxx'],
}

search搜索指定模式,传入正则,返回匹配的第一个字符索引。相当于返回了上面那个对象的index

replace

// 最简单用法
str.replace(str1 , str2)    // 只会替换第一个字符串,要想替换所有字符串,必须使用带全局标记的正则


// 正则
str.replace(RegExp , str2)

replace更秀的用法是第二个参数用函数,fn(匹配到的字符串,匹配到的字符串第一个字符的索引,整个字符串)

# 11. split

很常用,但一般都不知道它有第二个参数。

第一个参数可以是普通字符串也可以是正则,第二个可选参数指定返回的数组长度,超过长度的部分被舍去。

# 12. localeCompare