Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
String 的 substring() 方法返回该字符串从起始索引到结束索引(不包括)的部分,如果未提供结束索引,则返回到字符串末尾的部分。
返回子字符串中第一个要包含的字符的索引。
indexEnd 可选返回子字符串中第一个要排除的字符的索引。
包含给定字符串的指定部分的新字符串。
substring() 方法从 indexStart 开始提取字符,直到(但不包括)indexEnd。具体来说:
任何小于 0 或大于 str.length 的参数值都会被视为分别等于 0 和 str.length。
任何值为 NaN 的参数将被视为等于 0。
下例使用 substring 输出字符串 "Mozilla" 中的字符:
以下示例使用 substring() 方法和 length 属性来提取特定字符串的最后字符。这种方法可能更容易记住,因为你不需要像上面的示例那样知道起始和结束索引。
substring() 和 substr() 方法之间存在细微差别,因此你应该小心不要混淆它们。
此外,substr() 被认为是 ECMAScript 中的遗留特性,因此如果可能的话最好避免使用它。
substring() 和 slice() 方法几乎相同,但在处理负数参数时有一些细微差别。
substring() 方法在 indexStart 大于 indexEnd 的情况下会交换它的两个参数,这意味着仍会返回一个字符串。而 slice() 方法在这种情况下返回一个空字符串。
如果两个参数中的任何一个或两个都是负数或 NaN,substring() 方法将把它们视为 0。
slice() 方法也将 NaN 参数视为 0,但当给定负值时,它会从字符串的末尾开始反向计数以找到索引。
请参阅 slice() 页面以获取更多关于负数的示例。
以下示例替换字符串中的子字符串。它可以替换单个字符和子字符串。示例的最后一个函数调用将字符串 Brave New World 更改为 Brave New Web。
请注意,如果 oldS 本身是 newS 的子字符串,这可能导致无限循环,例如,假如你尝试在此处用 "OtherWorld" 替换 "World"。
替换字符串的更好方法如下:
上面的代码仅作为子字符串操作的示例。如果你需要替换子字符串,大多数情况下你会想要使用 String.prototype.replace() 函数。
| ECMAScript® 2027 Language Specification # sec-string.prototype.substring |
启用 JavaScript 以查看此浏览器兼容性表。