Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. JavaScript
  3. JavaScript 参考
  4. JavaScript 标准内置对象
  5. String
  6. String.prototype.substr()

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

String.prototype.substr()

已弃用: 不再推荐使用该特性。虽然一些浏览器仍然支持它,但也许已从相关的 web 标准中移除,也许正准备移除或出于兼容性而保留。请尽量不要使用该特性,并更新现有的代码;参见本页面底部的兼容性表格以指导你作出决定。请注意,该特性随时可能无法正常工作。

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

备注:substr() 不属于 ECMAScript 主要规范——它在附件 B: Web 浏览器的附加 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)

参数

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() 迁移到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"。实际的重构路径取决于对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)); // ''

规范

Specification
ECMAScript® 2026 Language Specification
# sec-string.prototype.substr

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp