String
coderljw 2024-10-13 大约 4 分钟
# 1. String(any)
- 构造函数创建字符串。
String(7) // => '7'
String({}) // => '[object Object]'
1
2
2
# 2. charAt(index)
- 返回指定位置的字符,默认位置为 0,超出 length - 1 返回空字符串。
'clearlove7'.charAt(9) // => '7'
'clearlove7'.charAt(20) // => ''
1
2
2
# 3. charCodeAt(index)
- 返回指定位置 UTF-16 代码单元(前 128 位于 ASCII 码等同)。
'clearlove7'.charCodeAt(9) // => 55
'clearlove7'.charCodeAt(20) // => NaN
1
2
2
# 4. String.fromCharCode(number)
- UTF-16 代码单元码转字符。
String.fromCharCode(55) // => '7'
String.fromCharCode(78, 101, 111) // => 'Neo'
1
2
2
# 5. indexOf(string, beginIndex)
返回字符首次出现的索引位置,若无返回 -1。
第二个参数为开始查找位置。
'clearlove7'.indexOf('o') // => 6
'clearlove7'.indexOf('o', 7) // => -1
1
2
2
# 6. lastIndexOf(string, endIndex)
返回字符最后出现的索引位置,若无返回 -1。
第二个参数为截止查找位置。
'clearlove7'.lastIndexOf('l') // => 5
'clearlove7'.lastIndexOf('l', 4) // => 1
1
2
2
# 7. search(regexp)
返回字符首次出现的索引位置,若无返回 -1。
如果传入一个非正则,则会使用 new RegExp(regexp) 隐式地将其转换为正则表达式对象,忽略 //g 标识。
与 indexOf 的区别在于可传入正则。
'clearlove7'.search(/l/) // => 1
'clearlove7'.search('jack') // => -1
1
2
2
# 8. includes(string, beginIndex)
判断字符串中是否存在指定字符。
第二个参数为开始查找索引。
'clearlove7'.includes('love') // => true
'clearlove7'.includes('jack') // => false
'clearlove7'.includes('love', 7) // => false
1
2
3
2
3
# 9. substring(beginIndex, endIndex)
- 从开始索引截取至结束索引,若结束索引未指定,截取至末尾(包含开始索引,不包含结束索引)。
'clearlove7'.substring(5) // => 'love7'
'clearlove7'.substring(5, 7) // => 'lo'
'clearlove7'.substring(11) // => ''
1
2
3
2
3
# 10. slice(beginIndex, endIndex)
从开始索引截取至结束索引,若结束索引未指定,截取至末尾,负数反序截取(包含开始索引,不包含结束索引)。
与 substring 区别在于参数可以是负数,substring 参数 < 0 时按 0 计算。
'clearlove7'.slice(5) // => 'love7'
'clearlove7'.slice(5, 7) // => 'lo'
'clearlove7'.slice(11) // => ''
'clearlove7'.slice(-5, -1) // => '7'
1
2
3
4
2
3
4
# 11. substr(beginIndex, length)
- 从开始索引截取指定数量字符,若数量未指定,截取至末尾(包含开始索引)。
'clearlove7'.substr(5) // => 'love7'
'clearlove7'.substr(5, 2) // => 'lo'
'clearlove7'.substr(11) // => ''
1
2
3
2
3
# 12. replace(string | regexp, string | callback)
替换字符串中指定字符。
第二个参数可传递一个回调函数,增删改皆可以用此方法。
'clearlove7'.replace('l', '7') // => 'c7earlove7'
'clearlove7'.replace(/l/g, '7') // => 'c7ear7ove7'
'clearlove7'.replace(/(clear)|(7)/g, (item, index) => item === '7' ? '' : 'jack') // => 'jacklove'
// 隐藏中间四位手机号码
'17777777777'.replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2') // => 177****7777
1
2
3
4
5
6
7
2
3
4
5
6
7
# 13. replaceAll(string | regexp, string | callback)
replace 正则 //g 的语法糖。
第一个参数为正则时,必须指明全局。
'clearlove7'.replaceAll('l', '7') // => 'c7ear7ove7'
'clearlove7'.replaceAll(/l/g, '7') // => 'c7ear7ove7'
1
2
2
# 14. repeat(number)
- 重复字符串次数。
'7'.repeat(7) // => '7777777'
1
# 15. split(string | regexp, number)
分割字符串为数组。
第二个参数限制返回数组的长度。
'clear,love7'.split(',') // => ['clear', 'love7']
'clear,love7'.split(7) // => ['clear,love', '']
'clear,love7'.split('', 5) // => ['c', 'l', 'e', 'a', 'r']
// 传入正则
'777love777'.split(/(?:[a-zA-Z]+)/) // => ['777', '777']
'lOve'.split(/(ov)/i) // => ['l', 'Ov', 'e']
1
2
3
4
5
6
7
2
3
4
5
6
7
# 16. padStart(targetLength, string) & padEnd(targetLength, string)
- 当字符串长度不足时,在首/尾填充指定字符至目标长度。
'clearlove'.padStart(10, 7) // => '7clearlove'
'clearlove'.padEnd(10, 'x') // => 'clearlovex'
1
2
2
# 17. toUpperCase() & toLowerCase()
- 转换为大小写。
'clearLove7'.toUpperCase() // => 'CLEARLOVE7'
'clearLove7'.toLowerCase() // => 'clearlove7'
1
2
2
# 18. toLocaleUpperCase(locale) & toLocaleLowerCase(locale)
- 针对地区(浏览器主语言)转换为大小写,推荐此写法。
'clearLove7'.toLocaleUpperCase() // => 'CLEARLOVE7'
'clearLove7'.toLocaleLowerCase() // => 'clearlove7'
1
2
2
# 19. trim() & trimStart() & trimEnd() & trimLeft() & trimRight()
- 清空字符串 [开头][结尾] 空格。
const str = ' clear love7 '
str.trim() // => 'clear love7'
str.trimStart() // => 'clear love7 '
str.trimEnd() // => ' clear love7'
str.trimLeft() // => 'clear love7 '
str.trimRight() // => ' clear love7'
1
2
3
4
5
6
7
2
3
4
5
6
7
# 20. startsWith(string, beginIndex)
判断字符串开头字符。
第二个参数为开始判断的位置。
'clearlove7'.startsWith('clear') // => true
'clearlove7'.startsWith('love', 5) // => true
1
2
2
# 21. endsWith(string, length)
判断字符串结尾字符。
第二个参数为截取字符串的长度。
'clearlove7'.endsWith('love') // => false
'clearlove7'.endsWith('love', 9) // => true
1
2
2
# 22. match(regexp)
匹配指定的字符。
如果传入一个非正则,则会使用 new RegExp(regexp) 隐式地将其转换为正则表达式对象。
'clearlove7'.match('l') // => ['l']
'clearlove7'.match(/l/g) // => => ['l', 'l']
'clearlove7'.match('jack') // => null
'clearlove7'.match() // => ['']
1
2
3
4
2
3
4
# 23. matchAll(regexp)
match 正则 //g 的语法糖,但返回所捕获组的迭代器。
参数为正则时,必须指明全局。
for (const i of 'clearlove7'.matchAll('l')) console.log(i) // => 依次打印:['l'] -> ['l']
for (const i of 'clearlove7'.matchAll(/l/g)) console.log(i) // => 依次打印:['l'] -> ['l']
1
2
2
# 24. concat(any)
- 等同 + 赋值操作符拼接字符串,但性能不如 + 拼接。
'clearlove'.concat(7) // => 'clearlove7'
1
# 25. length
- unicode 字符集特殊情况。
'\u2606'.length // => 1
1
# 26. at(index)
- 根据索引取值,默认索引为0,负数反序取值。
'clearlove7'.at(-1) // => '7'
1