JavaScript字符串子串提取:substring、slice与substr详解

作者:闭包旅人

时间:2026-10-29

浏览:310

本文详细解析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标准已不再推荐继续使用该方法。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章