substr与substring函数区别_详解两者差异

2025-04-24 3

substrsubstring 是两种用于从字符串中提取子字符串的方法,但它们之间有一些关键区别。以下是详细的比较:


1. 语法区别

substr

  • 语法: string.substr(start, length)
  • 参数:
    • start: 起始索引(从 0 开始)。
    • length: 要提取的字符数。
  • 特点:
    • 第二个参数是子字符串的长度,而不是结束索引。
    • 如果未提供 length,则提取从 start 到字符串末尾的所有字符。

substring

  • 语法: string.substring(start, end)
  • 参数:
    • start: 起始索引(从 0 开始)。
    • end(可选): 结束索引(不包含该索引位置的字符)。
  • 特点:
    • 第二个参数是结束索引,而不是长度。
    • 如果未提供 end,则提取从 start 到字符串末尾的所有字符。
    • 如果 start > end,会自动交换两者的值(某些语言中不支持负索引)。

2. 参数处理的区别

substr

  • 允许负值作为 start 参数(在某些语言中,如 JavaScript),表示从字符串末尾开始计算索引。
  • 如果 length 为负数或未定义,行为可能因语言而异(如 JavaScript 中会返回空字符串)。

substring

  • 不支持负索引。
  • 如果 startend 为负数,通常会被视为 0。
  • 如果 start === end,返回空字符串。

3. 示例对比

假设字符串为 "Hello, World!"

substr 示例

let str = "Hello, World!";
console.log(str.substr(7, 5)); // 输出: "World"
console.log(str.substr(-6, 5)); // 输出: "World" (负索引从末尾开始)

substring 示例

let str = "Hello, World!";
console.log(str.substring(7, 12)); // 输出: "World"
console.log(str.substring(12, 7)); // 输出: "World" (自动交换 start 和 end)
console.log(str.substring(-6, 5)); // 输出: "Hello" (负索引被视为 0)


4. 浏览器/语言支持

  • substr:
    • 在 JavaScript 中已被标记为废弃,不推荐使用。
    • 某些现代浏览器可能仍然支持,但未来可能会被移除。
  • substring:
    • 广泛支持,是标准方法,推荐使用。

5. 对比表

| 特性 | substr | substring |
|---------------------|-----------------------------------|---------------------------------|
| 参数 | start, length | start, end |
| 第二个参数含义 | 子字符串长度 | 结束索引(不包含) |
| 负索引支持 | 部分语言支持(如 JavaScript) | 不支持 |
| 自动交换参数 | 不支持 | 如果 start > end,自动交换 |
| 推荐使用 | 不推荐(已废弃) | 推荐使用 |


6. 何时使用?

  • 优先使用 substring,因为它是标准方法,兼容性更好,且语义更清晰。
  • 如果需要基于长度提取子字符串,可以手动计算结束索引,然后使用 substring

示例:

let str = "Hello, World!";
let start = 7;
let length = 5;
let end = start + length;
console.log(str.substring(start, end)); // 输出: "World"


通过以上对比,可以清晰了解 substrsubstring 的区别,并根据实际需求选择合适的方法。

(本文地址:https://www.nzw6.com/6384.html)Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载