返回

JavaScript 中字符串截取:slice 与 substring 的异同

前端

引言

在 JavaScript 开发中,字符串截取是一种至关重要的操作,它允许我们提取字符串的特定部分。JavaScript 提供了两种常见的字符串截取方法:slicesubstring。虽然这两个方法都用于提取字符串的子串,但它们在行为和语义上却存在着一些细微的差别。本文将深入探讨 slicesubstring 的异同,并提供清晰的示例以帮助您理解它们在实际应用中的区别。

slice

slice 方法用于从字符串中截取一段子字符串,它接受两个参数:

  • startIndex:指定要开始截取的字符索引(从 0 开始)。
  • endIndex(可选):指定要截取到但不包括在内的字符索引。

slice 方法返回从 startIndexendIndex(不包括 endIndex)之间的字符子串。如果未提供 endIndex,则方法将一直截取到字符串末尾。

示例:

const str = "Hello, world!";

// 截取从第 0 个字符到第 4 个字符(不包括第 4 个字符)
console.log(str.slice(0, 4)); // 输出: "Hell"

// 截取从第 6 个字符到字符串末尾
console.log(str.slice(6)); // 输出: "world!"

substring

substring 方法也用于从字符串中截取一段子字符串,它接受两个参数:

  • startIndex:指定要开始截取的字符索引(从 0 开始)。
  • endIndex(可选):指定要截取到但不包括在内的字符索引。

slice 方法不同,substring 方法返回从 startIndexendIndex-1(包括 endIndex-1)之间的字符子串。如果未提供 endIndex,则方法将一直截取到字符串末尾。

示例:

const str = "Hello, world!";

// 截取从第 0 个字符到第 3 个字符(包括第 3 个字符)
console.log(str.substring(0, 3)); // 输出: "Hel"

// 截取从第 6 个字符到字符串末尾
console.log(str.substring(6)); // 输出: "world"

异同

以下表格总结了 slicesubstring 方法之间的主要异同:

特征 slice substring
返回的子字符串 startIndexendIndex(不包括 endIndex startIndexendIndex-1(包括 endIndex-1
行为 如果 startIndexendIndex 超出字符串长度,会自动调整 不会调整超出长度的索引
负数索引 接受负数索引,从字符串末尾开始计数 不接受负数索引

结论

slicesubstring 是 JavaScript 中用于字符串截取的两个常用方法,它们在行为和语义上存在着细微差别。slice 方法返回不包括 endIndex 的子字符串,而 substring 方法返回包括 endIndex-1 的子字符串。此外,slice 方法会自动调整超出长度的索引,而 substring 方法不会。通过理解这些异同,您可以根据具体需求选择最合适的字符串截取方法。