String.prototype.substr()
已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。
substr() 方法用于从字符串中提取一部分,从指定索引开始,并包含指定的后续字符数。
注意: substr() 不是 ECMAScript 规范的一部分,而是定义在 Annex B:浏览器附加的 ECMAScript 功能 中,对于非浏览器环境,它是可选的。因此,建议使用标准的 String.prototype.substring() 和 String.prototype.slice() 方法,以使您的代码具有最大的跨平台兼容性。在 String.prototype.substring() 页面 上有一些这三种方法的比较。
试一试
const str = "Mozilla";
console.log(str.substr(1, 2));
// Expected output: "oz"
console.log(str.substr(2));
// Expected output: "zilla"
语法
js
substr(start)
substr(start, length)
参数
返回值
一个包含给定字符串指定部分的新字符串。
描述
字符串的 substr() 方法从字符串中提取 length 个字符,从 start 索引开始计数。
- 如果
start >= str.length,则返回一个空字符串。 - 如果
start < 0,则索引从字符串末尾开始计数。更正式地说,在这种情况下,子字符串从max(start + str.length, 0)开始。 - 如果省略
start或其值为undefined,则将其视为0。 - 如果省略
length或其值为undefined,或者如果start + length >= str.length,则substr()会提取到字符串的末尾。 - 如果
length < 0,则返回一个空字符串。 - 对于
start和length,NaN都被视为0。
尽管不鼓励使用 substr(),但在遗留代码中,没有简单的方法可以将其迁移到 slice() 或 substring(),而不实际上为 substr() 编写一个 polyfill。例如,当 str = "01234", a = 1, l = -2 时,str.substr(a, l)、str.slice(a, a + l) 和 str.substring(a, a + l) 的结果都不同——substr() 返回一个空字符串,slice() 返回 "123",而 substring() 返回 "0"。实际的重构路径取决于对 a 和 l 范围的了解。
示例
使用 substr()
js
const string = "Mozilla";
console.log(string.substr(0, 1)); // 'M'
console.log(string.substr(1, 0)); // ''
console.log(string.substr(-1, 1)); // 'a'
console.log(string.substr(1, -1)); // ''
console.log(string.substr(-3)); // 'lla'
console.log(string.substr(1)); // 'ozilla'
console.log(string.substr(-20, 2)); // 'Mo'
console.log(string.substr(20, 2)); // ''
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-string.prototype.substr |
浏览器兼容性
加载中…