String.prototype.substr()
已弃用: 此功能不再推荐。虽然一些浏览器可能仍然支持它,但它可能已被从相关的 Web 标准中移除,可能正在被弃用,或者可能仅出于兼容性目的而保留。避免使用它,并在可能的情况下更新现有代码;请参阅此页面底部的兼容性表格来指导您的决策。请注意,此功能可能随时停止工作。
substr()
是 String
值的方法,它返回此字符串的一部分,从指定的索引开始,并扩展到后面的给定数量的字符。
注意:substr()
不是主要 ECMAScript 规范的一部分——它在附录 B:Web 浏览器的其他 ECMAScript 功能中定义,对于非浏览器运行时,它是规范性的可选功能。因此,建议人们改用标准的String.prototype.substring()
和String.prototype.slice()
方法,以使他们的代码最大限度地跨平台友好。String.prototype.substring()
页面对这三种方法进行了比较。
试一试
语法
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()
,但在不编写 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"
。实际的重构路径取决于对 a
和 l
范围的了解。
示例
使用 substr()
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 表格仅在浏览器中加载