Skip to content

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'
  • 空白字符包含
    • 空格
    • 换行符