JS中的substr和substring方法详解
在 JavaScript 中,有两个常用的字符串方法 substr
和 substring
,它们用于提取字符串中的子字符串。虽然它们的功能类似,但是它们之间还是存在一些区别,本文将详细解释它们的用法、区别以及示例。
1. substr方法
substr
方法可以从字符串中提取指定长度的字符。它接受两个参数,即起始位置和子字符串的长度。语法如下:
string.substr(start, length)
start
:表示从哪个位置开始提取子字符串。如果为负数,则表示从字符串末尾开始的位置(-1 为倒数第一个字符)。length
:表示要提取的子字符串的长度。如果省略该参数,则会一直提取到字符串末尾。
示例
let str = "Hello, World!";
let sub1 = str.substr(3, 5);
console.log(sub1); // Output: "lo, W"
let sub2 = str.substr(-6);
console.log(sub2); // Output: "World!"
在上面的示例中,我们使用 substr
方法从字符串 str
中提取子字符串。在第一个示例中,开始位置为 3,长度为 5,因此我们得到的子字符串是 “lo, W”。在第二个示例中,我们将负数作为开始位置,表示从倒数第六个字符开始提取,最终结果是 “World!”。
2. substring方法
substring
方法与 substr
类似,都是用于从字符串中提取子字符串。不同之处在于,substring
方法接受的参数是起始位置和终止位置,而不是起始位置和长度。语法如下:
string.substring(start, end)
start
:表示从哪个位置开始提取子字符串。end
:表示从哪个位置停止提取子字符串(不包括该位置处的字符)。如果省略该参数,则会一直提取到字符串末尾。
示例
let str = "Hello, World!";
let sub1 = str.substring(3, 8);
console.log(sub1); // Output: "lo, W"
let sub2 = str.substring(7);
console.log(sub2); // Output: "World!"
在上面的示例中,我们使用 substring
方法从字符串 str
中提取子字符串。在第一个示例中,起始位置为 3,终止位置为 8,因此我们得到的子字符串是 “lo, W”。在第二个示例中,我们只提供了起始位置,因此子字符串会一直提取到字符串末尾,最终结果是 “World!”。
3. 区别与注意事项
虽然 substr
和 substring
在功能上类似,但是它们之间还是存在一些区别和注意事项:
substr
方法的第二个参数是提取的子字符串的长度,而substring
方法的第二个参数是终止位置。- 如果
substr
的第一个参数为负数,它表示的是从字符串末尾开始的位置;但是如果substring
的参数为负数,会被当做 0 处理。 - 如果
substr
的第二个参数为负数,会被当做 0 处理;而substring
的第二个参数如果小于第一个参数,两者会被交换,然后提取子字符串。 - 如果
substr
的第二个参数为零或负数,将返回一个空字符串;而substring
的两个参数如果相等,也会返回一个空字符串。 - 如果
substr
和substring
的第一个参数超过了字符串的长度,返回的将会是空字符串。
4. 总结
在 JavaScript 中,substr
和 substring
方法都是用于从字符串中提取子字符串的常用方法。它们的区别在于参数的不同解释方式,使用时需要根据具体需要来选择合适的方法。