在前端开发中,我们经常需要对字符串进行截取操作。ES10 中提供了两个方法,分别是 slice()
和 substring()
。这两个方法看起来很相似,但实际上有一些区别。本文将详细介绍这两个方法的区别及使用。
slice()
方法
slice()
方法用于从字符串中提取指定的部分。它接受两个参数,分别是起始位置和结束位置。如果省略第二个参数,则会提取从起始位置到字符串末尾的所有字符。
下面是 slice()
方法的语法:
string.slice(start, end)
其中,start
参数表示起始位置,可以是负数。如果是负数,则表示从字符串末尾开始计算。如果省略该参数,则默认为 0。
end
参数表示结束位置,也可以是负数。如果是负数,则表示从字符串末尾开始计算。如果省略该参数,则默认为字符串的长度。
下面是 slice()
方法的示例代码:
const str = 'Hello, world!'; console.log(str.slice(7)); // 输出 'world!' console.log(str.slice(7, 12)); // 输出 'world' console.log(str.slice(-6)); // 输出 'world!' console.log(str.slice(7, -1)); // 输出 'world'
substring()
方法
substring()
方法也用于从字符串中提取指定的部分。它接受两个参数,分别是起始位置和结束位置。如果省略第二个参数,则会提取从起始位置到字符串末尾的所有字符。
下面是 substring()
方法的语法:
string.substring(start, end)
其中,start
参数表示起始位置,不能是负数。如果省略该参数,则默认为 0。
end
参数表示结束位置,也不能是负数。如果省略该参数,则默认为字符串的长度。
下面是 substring()
方法的示例代码:
const str = 'Hello, world!'; console.log(str.substring(7)); // 输出 'world!' console.log(str.substring(7, 12)); // 输出 'world' console.log(str.substring(12, 7)); // 输出 'world' console.log(str.substring(7, -1)); // 输出 'Hello, '
区别及使用
slice()
方法和 substring()
方法的区别在于对负数参数的处理方式。slice()
方法将负数参数转换为字符串长度加上负数参数,而 substring()
方法将负数参数视为 0。
另外,slice()
方法和 substring()
方法的第二个参数的处理方式也不同。slice()
方法将负数参数转换为字符串长度加上负数参数,而 substring()
方法将负数参数视为 0。
因此,如果你需要使用负数参数,建议使用 slice()
方法。
下面是一个示例代码,演示了如何使用 slice()
方法和 substring()
方法:
-- -------------------- ---- ------- ----- --- - ------- -------- -------------------------- -- -- -------- ------------------------ ----- -- -- ------- --------------------------- -- -- -------- ------------------------ ----- -- -- ------- ------------------------------ -- -- -------- ---------------------------- ----- -- -- ------- ----------------------------- ---- -- -- ------- ---------------------------- ----- -- -- ------- -
总结
slice()
方法和 substring()
方法都用于从字符串中提取指定的部分。它们的区别在于对负数参数的处理方式和第二个参数的处理方式。如果你需要使用负数参数,建议使用 slice()
方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66826b6ddc1ed1a61b3390d3