js 字符串的常用属性和方法
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String
属性
length 长度
js
'abc'.length // 3
[] 访问字符
js
let str = 'abc'
str[0] // 'a'
str[5] === undefined // true
str[0] = 'h' // 错误,字符串不可变
- 下标从 0 开始
- 下标不能是负数
- 超出长度获取时,返回
undefined
- 字符串是不可变的
方法
toUpperCase() 大写
js
'HelloWorld'.toUpperCase() // 'HELLOWORLD'
toLowerCase() 小写
js
'HelloWorld'.toUpperCase() // 'helloworld'
indexOf() 查找子字符串
js
let str = 'python-abc.xyz'
str.indexOf('abc') // 7
str.indexOf('abcd') // -1
str.indexOf(substr, pos)
- 它从给定位置 pos 开始,在 str 中查找 substr
- 没有找到,返回 -1;找到了则返回匹配到的起始位置
includes() 判断是否包含
js
let str = 'python-abc.xyz'
str.includes('abc') // true
str.includes('abcd') // false
str.includes('abc', 8) // false
str.includes(substr, pos)
- 从给定位置 pos 开始,根据 str 中是否包含 substr 来返回
true/false
startsWith() 判断开头
js
let str = 'python-abc.xyz'
str.startsWith('python') // true
str.startsWith('abc') // false
endsWith() 判断结尾
js
let str = 'python-abc.xyz'
str.endsWith('.xyz') // true
str.endsWith('.com') // false
slice() 切片
js
let str = 'python-abc.xyz'
str.slice(0, 2) // 'py'
str.slice(2) // 'thon-abc.xyz'
str.slice(-4) // '.xyz'
str.slice(-4, -1) // '.xy'
str.slice(5, 1) // '' 空字符串
str.slice(20) // '' 空字符串
- 左闭右开区间
- 第二个参数如果省略,则一直切到末尾
- 切片下标可以是负数,最后一个字符下标是 -1
- 超出范围返回空字符串,不会报错
split() 分割
js
let str = 'python-abc.xyz'
str.split() // ['python-abc.xyz']
str.split('.') // ['python-abc', 'xyz']
str.split('-') // ['python', 'abc.xyz']
- 字符串空,分隔符非空;返回值为
[""]
- 字符串和分隔符都是空;返回值为
[]
substring() 提取子串(通过下标范围)
js
let str = 'python-abc.xyz'
str.substring(0, 2) // 'py'
str.substring(2, 0) // 'py'
str.substring(3, -1) // 'pyt'
- 提取介于两个下标之间的子字符串
- 几乎与 slice() 方法一样,不同点:
- 允许 start 大于 end
- 不支持负参数,它们被视为 0
substr() 提取子串(通过起始下标,并可指定长度)
🚫 已弃用
substr() 不属于 ECMAScript 主要规范,不再推荐使用该特性。
js
let str = 'python-abc.xyz'
str.substr(0, 2) // 'py'
str.substr(-4) // '.xyz'
str.substr(-4, 9) // '.xyz'
- 第二个参数为指定获取的子串长度
- 指定长度加上起始下标大于字符串长度会忽略,最大提取到字符串末尾
replace() 替换一次
js
let str = 'python-abc.xyz'
str.replace('y', 'x') // 'pxthon-abc.xyz'
str.replace(/y/g, 'x') // 'pxthon-abc.xxz'
str.replace('xyz', 'com') // 'python-abc.com'
- 默认仅替换一次
- 若要全局替换,需要使用带有
g
标志的正则表达式或使用replaceAll()
- 第一个参数可以是字符串或正则表达式
- 第二个参数可以是字符串或函数
replaceAll() 替换全部
js
let str = 'python-abc.xyz'
str.replaceAll('y', 'x') // 'pxthon-abc.xxz'
str.replaceAll(/y/, 'x') // TypeError 错误
- 基本用法与
replace()
一致 - 如果第一个参数是一个正则表达式,则必须设置全局(
g
)标志,否则会抛出TypeError
trim() 去掉首尾空白字符(空格或换行符)
js
let str = ' python-abc.xyz \n'
str.trim() // 'python-abc.xyz'
// 去掉开头的空白字符
str.trimStart() // 'python-abc.xyz \n'
// 去掉结尾的空白字符
str.trimEnd() // ' python-abc.xyz'
- 空白字符包含
- 空格
- 换行符