【JavaScript中三个截取字符串函数用法和区别比较实例详解】在JavaScript中,处理字符串时经常需要用到截取字符串的功能。常见的三个字符串截取方法是 `substring()`、`slice()` 和 `substr()`。虽然它们都能实现字符串的截取功能,但使用方式和应用场景有所不同。以下是对这三者的详细对比和实例说明。
一、
1. `substring(start, end)`:从 `start` 开始,到 `end` 结束(不包括 `end`),若参数为负数则会被视为0。
2. `slice(start, end)`:与 `substring()` 类似,但支持负数索引,表示从字符串末尾开始计算位置。
3. `substr(start, length)`:从 `start` 开始,截取长度为 `length` 的子字符串,不支持负数索引。
三者的核心区别在于对负数参数的支持、是否包含结束索引以及语法上的细微差别。
二、表格对比
| 方法 | 参数说明 | 是否支持负数 | 是否包含结束索引 | 是否可读性强 | 适用场景 |
| `substring()` | `start`, `end` | 否 | 是(不包含) | 一般 | 简单截取,适合已知位置 |
| `slice()` | `start`, `end` | 是 | 是(不包含) | 较高 | 支持负数,适合复杂索引操作 |
| `substr()` | `start`, `length` | 否 | 否(按长度截取) | 一般 | 截取固定长度,较不常用 |
三、实例说明
示例1:基本使用
```javascript
let str = "JavaScript中三个截取字符串函数用法和区别比较实例详解";
// substring
console.log(str.substring(0, 5)); // 输出: "JavaS"
// slice
console.log(str.slice(0, 5)); // 输出: "JavaS"
// substr
console.log(str.substr(0, 5)); // 输出: "JavaS"
```
示例2:负数参数
```javascript
let str = "Hello World";
// substring 不支持负数
console.log(str.substring(-3, 5)); // 输出: "Hell" (-3 被视为 0)
// slice 支持负数
console.log(str.slice(-5, 5)); // 输出: "World" (-5 表示倒数第5个字符)
// substr 不支持负数
console.log(str.substr(-3, 5)); // 输出: "ld" (-3 被视为 8,即 "d")
```
示例3:截取特定部分
```javascript
let str = "This is a test string.";
// substring
console.log(str.substring(8, 11)); // 输出: "a t"
// slice
console.log(str.slice(8, 11)); // 输出: "a t"
// substr
console.log(str.substr(8, 3)); // 输出: "a t"
```
四、总结
在实际开发中,`slice()` 更加灵活,尤其在需要使用负数索引时;`substring()` 适用于简单的字符串截取;而 `substr()` 则更偏向于根据长度进行截取,但在现代开发中使用频率较低。
建议优先使用 `slice()`,因其兼容性好、语义清晰,且支持更多高级用法。


