在 JavaScript 里,substring()
和 slice()
这两个方法都用于从字符串里提取子字符串,它们的功能有相似之处,但也存在一些差别。
相同点
二者都能从字符串中提取子字符串,并且使用时都要传入起始索引和可选的结束索引。
不同点
- 参数处理:
substring()
:若起始索引比结束索引大,它会自动交换这两个参数,确保提取子字符串的操作能正确进行。slice()
:如果起始索引大于结束索引,它会返回一个空字符串。
- 负索引处理:
substring()
:若传入负索引,它会把负索引视为 0。slice()
:支持负索引,负索引代表从字符串末尾开始计数。
示例代码
javascript
const str = "Hello, World!";// 使用 substring()
console.log(str.substring(7, 12));
console.log(str.substring(12, 7)); // 使用 slice()
console.log(str.slice(7, 12));
console.log(str.slice(12, 7)); // 负索引的使用
console.log(str.substring(-5, 5));
console.log(str.slice(-5));
在这个示例里,substring()
和 slice()
对不同参数的处理方式存在明显差异。当传入的起始索引和结束索引顺序颠倒时,substring()
能正确处理,而 slice()
会返回空字符串。对于负索引,substring()
会将其当作 0,slice()
则从字符串末尾开始计数。