字符串/数组截取方法

1,059 阅读3分钟

这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

前言

最近在做项目的时候,遇到一个截取字符串的需求。JS提供的截取字符串的方法挺多的,自己脑海里立马浮现出一堆,但是当真正用的时候,却发现自己对这些方法的参数具体怎么用都已经记不清了。

这篇文就来记录下平时常用的字符串和数组截取方法~

截取字符串

substr

从指定的索引位置start开始,截取长度为length的字符串,不影响原字符串。

该方法并非JS语言的核心,后续会被废弃,需谨慎使用。

str.substr(start[, length])
  • start如果为负数,则用字符串长度+start代替。
  • length为负数,则返回一个空字符串。如果不填,则截取到字符串末尾。

substring

截取从开始索引位置(indexStart)到结束索引(indexEnd)前一个位置段的字符串。不影响原始字符串。

截取的字符串包含indexStart不包含indexEnd的元素。(左闭右开)。

str.substring(indexStart[, indexEnd])
  • 任意参数为负数,都置为0
  • 如果任意参数大于字符串长度,则被当做字符串长度
  • 如果indexStart大于indexEnd,则位置调换
  • 如果indexStart等于indexEnd,则返回空字符串
  • 如果省略indexEnd,则截取到字符串末尾。

slice

截取从开始索引(indexStart)到结束索引(indexEnd)前一个位置段的字符串,不影响原字符串。

截取的字符串包含indexStart不包含indexEnd的元素。(左闭右开)。

str.slice(indexStart[, indexEnd])
  • 如果indexStart为负数,则用字符串长度+indexStart代替
  • 如果indexEnd为负数,则用字符串长度+endStart代替
  • 如果indexEnd小于startEnd,返回空字符串
  • 如果省略indexEnd,则截取到字符串末尾

截取数组

slice

slice不光可以用来截取字符串,同样适用于截取数组。

返回一个新数组;从indexStart索引位置开始,到indexEnd索引的前一个位置结束的原数组的浅拷贝(在某些情况下修改返回的新数组,会影响原数组)。

截取的数组包含indexStart不包含indexEnd的元素。(左闭右开)。

array.slice([indexStart[, indexEnd]])
  • 如果省略indexStart,则从0开始;如果省略indexEnd,则截取到数组末尾。
  • 如果indexStart为负数,则用数组长度+indexStart代替。
  • 如果indexStart超出数组索引范围,则返回空数组
  • 如果indexStart大于indexEnd,则返回空数组
  • 如果indexEnd超出数组索引范围,则截取到数组末尾。

splice

splice方法可以对数组实现增删改操作,会改变原数组;

返回被修改的原数组内容。

array.splice(start[, deleteCount[, item1[,item2[, ...]]]])
  • 如果start超过数组索引范围,则从数组末尾开始添加元素。
  • 如果start是负值,则用数组长度+start代替。
  • 如果start是负值,且绝对值大于数组索引范围,则用0代替。

  • deleteCount为0或为负数,则不移除元素。此情况第三个参数不能为空,至少添加一个元素。
  • deleteCount大于start索引后边的元素综合,则将start后的元素全部删除。
  • delteCount省略,则直接删除start后的元素。

  • items就是要添加的元素,从start位置开始。

截取数组用到前两个参数:

array.splice(start, deleteCount)