JavaScript字符串子串提取:substring、slice与substr详解
本文详细解析JavaScript中提取字符串子串的三种主要方法:substring、slice和substr。重点对比了它们在处理负数参数、参数大小关系及长度指定方式上的差异,指出substr虽常用但非标准推荐,建议根据具体需求选择合适的方法。
JavaScript字符串子串提取概述
在JavaScript中,提取字符串子串主要依赖substring()或slice()方法(支持NN4+及IE4+及以上版本),下文将具体阐述它们的用法。
substring方法详解
substring()方法的语法原型如下:
string.substring(from, to)
该方法接收两个参数,其中from参数指定子串在原字符串中的起始索引(从0开始计数);to参数为可选,用于指定子串的结束索引(同样从0开始计数)。通常情况下,to的值应大于from;若省略to参数,则子串将截取至原字符串末尾。
若用户误将from参数设置为大于to参数,JavaScript引擎会自动交换两者的位置,确保substring()始终从较小的索引开始,至较大的索引结束。需要注意的是,截取结果包含起始位置的字符,但不包含结束位置的字符。
var fullString = "Every dog has his day.";
var section = fullString.substring(0, 4); // section is "Ever".
section = fullString.substring(4, 0); // section is also "Ever".
section = fullString.substring(1, 1); // section is an empty string.
section = fullString.substring(-2, 4); // section is "Ever", same as fullString.substring(0, 4); slice()的原型为: string.slice(start, end)
slice方法特性
slice()方法同样接收start和end两个参数,分别表示子串的起始和结束位置。与substring()不同,slice()允许参数为负数,负数表示从字符串末尾倒数的位置(例如-3表示倒数第三个字符)。这种负数支持使slice()比substring()更为灵活,但其容错性较低:若start大于end,slice()将直接返回空字符串(具体示例略)。
substr方法说明
此外,还存在substr()方法,其语法原型如下:
string.substr(start, length)
从原型可见,substr()的第一个参数start表示起始位置,第二个参数length表示要提取的子串长度。尽管该方法在早期JavaScript中广泛使用,但现行JavaScript标准已不再推荐继续使用该方法。
什么时候该用JS构造器:与工厂模式、字面量的选择对比
2026-11-05 16:18:22
推荐几款轻量级JS照片墙开源库及对比
2026-11-05 15:56:19
JavaScript递归写法有哪些常见陷阱及避免方法
2026-11-05 14:53:38
JS数组浅拷贝与深拷贝怎么选?场景与方法总结
2026-11-05 14:41:02
p5.js 中 setup() 和 draw() 函数的执行机制详解
2026-11-05 12:32:38
