JavaScript `substring()`、`slice()`和`substr()`函数详解:字符串截取的利器28


在JavaScript中,处理字符串是家常便饭。而字符串截取,更是开发过程中频繁用到的操作。很多初学者常常混淆`substring()`、`slice()`和`substr()`这三个函数,甚至误以为`left`函数是JavaScript的原生函数(实际上,JavaScript并没有名为`left`的原生字符串截取函数)。本文将深入浅出地讲解这三个函数的功能、用法以及它们之间的区别,帮助大家彻底掌握JavaScript字符串截取的技巧。

虽然JavaScript没有直接的`left`函数,但我们可以轻松地用`substring()`、`slice()`或`substr()`来实现同样的功能。这三个函数都能从字符串中提取子字符串,但它们的参数和行为略有不同,理解这些差异至关重要。

1. `substring(startIndex, endIndex)` 函数

`substring()`方法返回一个字符串,该字符串包含从`startIndex`(包含)到`endIndex`(不包含)之间的字符。如果`startIndex`大于`endIndex`,则两个参数会自动交换。如果省略`endIndex`,则该方法返回从`startIndex`到字符串结尾的子字符串。参数必须是非负整数。

示例:```javascript
let str = "Hello World";
// 从索引0开始到索引5(不包含)
let subStr1 = (0, 5); // "Hello"
// 从索引6开始到结尾
let subStr2 = (6); // "World"
// startIndex大于endIndex,参数自动交换
let subStr3 = (8, 2); // "llo Wo"
(subStr1, subStr2, subStr3);
```

特点:
参数必须是非负整数。
如果`startIndex`大于`endIndex`,会自动交换。
如果`endIndex`省略,则截取到字符串末尾。
不会修改原始字符串。


2. `slice(startIndex, endIndex)` 函数

`slice()`方法也返回一个字符串,包含从`startIndex`(包含)到`endIndex`(不包含)之间的字符。与`substring()`不同的是,`slice()`允许负索引。负索引表示从字符串结尾开始计数。例如,`-1`表示最后一个字符,`-2`表示倒数第二个字符。

示例:```javascript
let str = "Hello World";
// 从索引0开始到索引5(不包含)
let subStr1 = (0, 5); // "Hello"
// 从索引6开始到结尾
let subStr2 = (6); // "World"
// 从倒数第二个字符开始到结尾
let subStr3 = (-2); // "ld"
// 从索引1开始到倒数第二个字符(不包含)
let subStr4 = (1, -1); // "ello Wor"
(subStr1, subStr2, subStr3, subStr4);
```

特点:
允许负索引。
如果`startIndex`大于`endIndex`,则返回空字符串。
如果`endIndex`省略,则截取到字符串末尾。
不会修改原始字符串。


3. `substr(startIndex, length)` 函数

`substr()`方法返回一个指定长度的子字符串,该子字符串从`startIndex`开始。`length`参数指定要提取的字符数。与前两个函数不同,`substr()`的第二个参数是长度,而不是结束索引。

示例:```javascript
let str = "Hello World";
// 从索引0开始,提取5个字符
let subStr1 = (0, 5); // "Hello"
// 从索引6开始,提取5个字符
let subStr2 = (6, 5); // "World"
// 从索引0开始,提取100个字符 (超出字符串长度,截取到结尾)
let subStr3 = (0, 100); // "Hello World"
(subStr1, subStr2, subStr3);
```

特点:
第二个参数是子字符串的长度。
允许负索引作为`startIndex`,此时会从字符串结尾开始计算索引。
不会修改原始字符串。


4. 三个函数的比较

总而言之,`substring()`、`slice()`和`substr()`都能实现字符串截取,但它们的参数和行为略有不同。`substring()`和`slice()`使用起始和结束索引,而`substr()`使用起始索引和长度。`slice()`允许负索引,而`substring()`不允许。`substring()`会自动交换`startIndex`和`endIndex`,而`slice()`则返回空字符串。选择哪个函数取决于具体的应用场景。 通常情况下,`slice()`更灵活,推荐优先使用。

记住,JavaScript并没有`left`函数,但我们可以用以上三个函数中的任何一个轻松地模拟`left`函数的功能,例如,要获取字符串左边的5个字符,可以使用:```javascript
let str = "Hello World";
let left5 = (0, 5); //或者 (0, 5); 或者(0,5);
(left5); // "Hello"
```

希望本文能帮助大家彻底理解JavaScript字符串截取函数,并熟练运用它们来处理字符串。

2025-04-27


上一篇:JavaScript 开发论坛:资源、技巧与社区力量

下一篇:JavaScript代码片段详解与最佳实践