字符串操作方法汇总
# 字符串操作方法汇总
# 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
toUpperCase
和toLowerCase
没有参数,分别把字符串转为大写和小写
toLocaleUpperCase
和toLocaleLowerCase
可以选择性接收一个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
很常用,但一般都不知道它有第二个参数。
第一个参数可以是普通字符串也可以是正则,第二个可选参数指定返回的数组长度,超过长度的部分被舍去。