String.prototype.substr()

已弃用: 此功能不再推荐。虽然一些浏览器可能仍然支持它,但它可能已被从相关的 Web 标准中移除,可能正在被弃用,或者可能仅出于兼容性目的而保留。避免使用它,并在可能的情况下更新现有代码;请参阅此页面底部的兼容性表格来指导您的决策。请注意,此功能可能随时停止工作。

substr()String 值的方法,它返回此字符串的一部分,从指定的索引开始,并扩展到后面的给定数量的字符。

注意:substr() 不是主要 ECMAScript 规范的一部分——它在附录 B:Web 浏览器的其他 ECMAScript 功能中定义,对于非浏览器运行时,它是规范性的可选功能。因此,建议人们改用标准的String.prototype.substring()String.prototype.slice()方法,以使他们的代码最大限度地跨平台友好。String.prototype.substring() 页面对这三种方法进行了比较。

试一试

语法

js
substr(start)
substr(start, length)

参数

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,则返回空字符串。
  • 对于 startlengthNaN 将被视为 0

虽然鼓励您避免使用 substr(),但在不编写 substr() 的 polyfill 的情况下,没有简单的方法可以将 substr() 迁移到 slice()substring()。例如,当 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"。实际的重构路径取决于对 al 范围的了解。

示例

使用 substr()

js
const aString = "Mozilla";

console.log(aString.substr(0, 1)); // 'M'
console.log(aString.substr(1, 0)); // ''
console.log(aString.substr(-1, 1)); // 'a'
console.log(aString.substr(1, -1)); // ''
console.log(aString.substr(-3)); // 'lla'
console.log(aString.substr(1)); // 'ozilla'
console.log(aString.substr(-20, 2)); // 'Mo'
console.log(aString.substr(20, 2)); // ''

规范

规范
ECMAScript 语言规范
# sec-string.prototype.substr

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅