API

截取

substr

String#substr(beginIndex: number, length?: number | undefined): string

JS

  • beginIndex 不传入默认为 0
  • beginIndex 大于length取到空字符串
  • beginIndex 负值且abs(beginIndex)大于length则从 0 开始
  • length 为 0 或负值返回空字符串

⚠️ 任何时候,使用 substring 都是更好的选择

substring

String#substring(start: number, end?: number | undefined): string

JS

  • start 不传入默认取 0
  • index 为负值或 NaN 当 0 处理
  • index 大于length 则当作 length
  • start 大于 end 将互换位置

可见 substring 对很多非错误传参做了处理。

slice

// index 为负数,均可以理解为倒数
Array#slice(start?: number | undefined, end?: number | undefined): string[]
String#slice(start?: number | undefined, end?: number | undefined): string
  • 开始索引默认值等于 0
  • 负数索引原理(Polyfill)length + start | end
  • end 省略或大于数组 | 字符串长度则取到末尾
  • 返回数组 | 字符串

splice

Array#splice(start?: number, deleteCount?: number, ...addItem?: any): number[]
  • deleteCount 为 0 或负不删除元素
  • addItem 添加的元素从 start 位置开始
  • 返回包含被删除元素的数组

split

String#split(separator: string | RegExp, limit?: number | undefined): string[]

JS

  • 如果separator不存在的分隔符或省略,则返回包含一个由整个字符串组成的元素的数组。
  • 如果separator'',则将原字符串中每个字符的数组形式返回。

替换

replace

String#replace(searchValue: string | RegExp, replaceValue: string): string

JS

  • replaceValue 可以是一个字符串或者一个每次匹配都要调用的回调函数(带返回值)
  • 返回字符串
  • 只能替换第一个匹配的字符串