JavaScript中substr与substring的区别详解

作者:木棉时间:2026-10-29 15:10:09浏览:650

本文详细解析JavaScript中substr和substring两个字符串截取方法的区别。substr基于起始索引和截取长度,支持负数索引从末尾计算;substring基于起始和结束下标,遵循“含头不含尾”原则。通过具体代码示例对比两者在参数传递、负数处理及截取逻辑上的不同,帮助开发者避免常见错误。

substr与substring的基本区别

在开发过程中,经常需要对字符串进行截取操作。起初我误以为IDE自动提示的substr和substring没有太大区别,便随意使用了前者。

实际上,这两个方法存在显著差异,下面将逐一说明。

substr方法的参数与行为

1. substr(index, length)

该方法用于从字符串的指定起始索引位置开始,提取指定数量的字符。

substr方法接受两个参数:index(起始索引)和length(截取长度)。

当index为非负整数时:

a. 如果不传入任何参数,返回原始字符串。

例如:"abcdefg".substr() 的结果为 "abcdefg"

b. 如果仅传入一个参数index,则从该位置截取到字符串末尾。

例如:"abcdefg".substr(2) 的结果为 "defg"

当index为负整数时:

c. 若传入负数索引,则从字符串末尾向前计数,起始位置为1,直到负数的绝对值对应的位置。截取方向仍是从前向后。

例如:"abcdefg".substr(-2) 的结果为 "fg",等价于 "abcdefg".substr(-2 + "abcdefg".length)

substring方法的参数与行为

2. substring(start, end)

该方法用于提取字符串中两个指定下标之间的字符。

substring同样接受两个参数,但均为下标值,下标从0开始计算。截取的范围长度等于这两个下标的差值。

可以理解为“含头不含尾”的规则。

例如:"abcdefg".substring(2,4) 的结果为 "cd"

作者最新文章