返回
字符串截取三姐妹:slice()、substr()、substring()**
前端
2023-11-15 12:55:13
前言
在前端开发中,字符串处理是一个常见且重要的任务。而字符串截取则是字符串处理中最基本的操作之一。在 JavaScript 中,有三个内置函数可以用来截取字符串:slice()、substr() 和 substring()。
这三个函数虽然都能截取字符串,但它们在用法、功能和适用场景上却存在着一定的差异。为了能够熟练使用这三个函数,我们需要深入了解它们的特性。
slice()
slice() 函数是三个函数中最强大的一个。它的语法如下:
string.slice(start, end)
其中:
- start:必需。指定截取的起始位置。如果 start 为负数,则从字符串尾部开始计数。
- end:可选。指定截取的结束位置。如果 end 为负数,则从字符串尾部开始计数。如果未指定 end,则截取到字符串末尾。
用法:
slice() 函数的用法非常简单,只需指定起始位置和结束位置即可。例如:
const str = 'Hello World';
// 截取从第 0 位到第 4 位的子字符串
const newStr1 = str.slice(0, 4); // 'Hell'
// 截取从第 6 位到字符串末尾的子字符串
const newStr2 = str.slice(6); // 'World'
// 截取从倒数第 3 位到倒数第 1 位的子字符串
const newStr3 = str.slice(-3, -1); // 'or'
特点:
- slice() 函数不会修改原字符串。
- 如果 start 大于 end,则返回空字符串。
- 如果 start 或 end 超出字符串长度,则会自动调整为字符串长度或 0。
substr()
substr() 函数的语法如下:
string.substr(start, length)
其中:
- start:必需。指定截取的起始位置。如果 start 为负数,则从字符串尾部开始计数。
- length:必需。指定截取的长度。
用法:
substr() 函数需要指定起始位置和截取长度。例如:
const str = 'Hello World';
// 截取从第 0 位开始的长度为 4 的子字符串
const newStr1 = str.substr(0, 4); // 'Hell'
// 截取从第 6 位开始的长度为 5 的子字符串
const newStr2 = str.substr(6, 5); // 'World'
特点:
- substr() 函数不会修改原字符串。
- 如果 start 大于 end,则返回空字符串。
- 如果 start 或 length 超出字符串长度,则会自动调整为字符串长度或 0。
substring()
substring() 函数的语法如下:
string.substring(start, end)
其中:
- start:必需。指定截取的起始位置。如果 start 为负数,则从字符串尾部开始计数。
- end:可选。指定截取的结束位置。如果 end 为负数,则从字符串尾部开始计数。如果未指定 end,则截取到字符串末尾。
用法:
substring() 函数的用法与 slice() 函数非常相似,只需要指定起始位置和结束位置即可。例如:
const str = 'Hello World';
// 截取从第 0 位到第 4 位的子字符串
const newStr1 = str.substring(0, 4); // 'Hell'
// 截取从第 6 位到字符串末尾的子字符串
const newStr2 = str.substring(6); // 'World'
// 截取从倒数第 3 位到倒数第 1 位的子字符串
const newStr3 = str.substring(-3, -1); // 'or'
特点:
- substring() 函数不会修改原字符串。
- 如果 start 大于 end,则返回空字符串。
- 如果 start 或 end 超出字符串长度,则会自动调整为字符串长度或 0。
区别和适用场景
这三个函数虽然都能截取字符串,但在用法、功能和适用场景上却存在着一定的差异。
特征 | slice() | substr() | substring() |
---|---|---|---|
截取方式 | 起始位置和结束位置 | 起始位置和长度 | 起始位置和结束位置 |
起始位置 | 可以为负数 | 可以为负数 | 可以为负数 |
结束位置 | 可以为负数 | 必须为正数 | 可以为负数 |
返回值 | 截取的子字符串 | 截取的子字符串 | 截取的子字符串 |
修改原字符串 | 否 | 否 | 否 |
适用场景:
- slice(): 当需要精确控制截取的起始位置和结束位置时,可以使用 slice() 函数。
- substr(): 当需要指定截取的起始位置和长度时,可以使用 substr() 函数。
- substring(): 当需要截取一个范围内的子字符串时,可以使用 substring() 函数。
总结
slice()、substr() 和 substring() 是 JavaScript 中用于截取字符串的三大函数。它们各有自己的特点和适用场景。通过了解这三个函数的区别,我们可以根据不同的需求选择合适的函数来进行字符串截取。
在实际开发中,我们需要注意以下几点:
- 优先使用 slice() 函数,因为它的功能更强大,适用场景也更广泛。
- 如果需要截取指定长度的子字符串,可以使用 substr() 函数。
- 如果需要截取一个范围内的子字符串,可以使用 substring() 函数。
- 避免使用负数作为结束位置,因为这可能会导致意想不到的结果。