以下是 JavaScript 中常见字符串和数组方法的总结,按方法分类说明:
substring(startIndex, endIndex)
负数参数视为 0
;若 start > end
,自动交换位置。
省略 endIndex
时截取到末尾。
startIndex
:起始索引(包含)。
endIndex
:结束索引(不包含,可选)。
用途:截取字符串片段。
参数:
特性:
示例:
javascript"hello".substring(1, 3); // "el""hello".substring(3, 1); // "el"(自动交换)
slice(start, end)
支持负数(从末尾计算),例如 -2
表示倒数第二个元素。
若 start > end
,返回空字符串或数组。
用途:截取字符串或数组片段。
参数:
示例:
javascript"hello".slice(1, 3); // "el""hello".slice(-3); // "llo"(从倒数第三位开始)
split(separator, limit?)
空字符串 ""
会拆分为字符数组。
正则中的捕获组会保留在结果中。
separator
:字符串或正则表达式。
limit
:限制返回数组长度。
用途:按分隔符拆分字符串为数组。
参数:
特性:
示例:
javascript"a,b,c".split(","); // ["a", "b", "c"]"hello".split(/(e)/); // ["h", "e", "llo"]
match(regexp)
无 g
标志:返回类似 RegExp.exec
的数组(含捕获组、index
和 input
)。
有 g
标志:返回所有匹配结果的数组(无详细信息)。
用途:正则匹配字符串。
返回值:
示例:
javascript"abc123".match(/\d+/); // ["123", index: 3, ...]"abc123".match(/\d/g); // ["1", "2", "3"]
replace(searchValue, replaceValue)
searchValue
:字符串或正则(带 g
标志则全局替换)。
replaceValue
:字符串(可用 $1
等占位符)或函数。
用途:替换匹配内容。
参数:
示例:
javascript"John Doe".replace(/(\w+) (\w+)/, "$2, $1"); // "Doe, John""123".replace(/\d/g, "x"); // "xxx"
slice(start, end?)
用途:截取数组片段,不修改原数组。
参数:同字符串的 slice
,支持负数。
示例:
javascript[1, 2, 3].slice(1, 2); // [2][1, 2, 3].slice(-2); // [2, 3]
splice(start, deleteCount, ...items)
start
:起始位置(负数从末尾计算)。
deleteCount
:删除的元素数量(若为 0
则只插入)。
...items
:要插入的元素。
用途:添加/删除元素,修改原数组。
参数:
返回值:被删除的元素数组。
示例:
javascriptconst arr = [1, 2, 3];arr.splice(1, 1, "a"); // 返回 [2],arr变为 [1, "a", 3]
join(separator)
用途:将数组元素连接为字符串。
参数:separator
(默认逗号)。
示例:
javascript[1, 2, 3].join("-"); // "1-2-3"
方法 | 作用对象 | 修改原数据 | 参数特性 | 返回值 |
---|---|---|---|---|
substring | 字符串 | 否 | 自动处理负数及交换参数 | 新字符串 |
slice | 字符串/数组 | 否 | 支持负数,不自动交换参数 | 新字符串/数组 |
splice | 数组 | 是 | 可删除并插入元素 | 被删除元素的数组 |
split | 字符串 | 否 | 支持正则和捕获组 | 数组 |
join | 数组 | 否 | 默认用逗号连接 | 字符串 |
match | 字符串 | 否 | 依赖正则标志返回不同结果 | 数组或 null |
replace | 字符串 | 否 | 支持函数替换和正则全局替换 | 新字符串 |
注意事项:
字符串方法均不修改原字符串,返回新字符串。
splice
是唯一会修改原数组的方法。
slice
和 substring
在处理参数时有显著差异(负数、参数顺序)。