📜  JavaScript 中 substr() 和 substring() 的区别(1)

📅  最后修改于: 2023-12-03 15:16:08.985000             🧑  作者: Mango

JavaScript 中 substr() 和 substring() 的区别

在 JavaScript 中有两个常用的字符串方法是 substr()substring(),作用都是返回字符串的一个子串。虽然两者的作用看上去相似,但是它们的行为又有所不同。下面我们一起来看看它们的区别。

substr()

substr(start, length) 方法返回从 start 位置开始的指定长度的子串。其中 start 表示起始位置,可以是负数,表示从字符串末尾开始的位置,如 -1 表示字符串的最后一个字符。length 是可选的,如果没有指定,将返回从起始位置到字符串末尾的所有字符。

示例
const str = "hello world";

console.log(str.substr(1, 4)); // "ello"
console.log(str.substr(-3, 2)); // "rl"
console.log(str.substr(8)); // "rld"
console.log(str.substr(-5)); // "world"
substring()

substring(start, end) 方法返回从 start 位置到 end 位置(不包括 end 位置)的子串。其中 startend 表示的都是索引位置,如果出现负数,则会被转换为 0。如果 end 没有指定,则将返回从起始位置到字符串末尾的所有字符。

示例
const str = "hello world";

console.log(str.substring(1, 5)); // "ello"
console.log(str.substring(5, 1)); // "ello"
console.log(str.substring(8)); // "rld"
console.log(str.substring(-5)); // "hello world"

需要注意的是,substring() 方法中的参数可以交换位置(如上例),而 substr() 方法中的第二个参数所表示的是要返回的子串的长度,如果第二个参数为负数,则将被转换为 0

总结
  • substr() 方法是根据字符位置来提取字符串的子串,第二个参数是要返回的子串的长度;
  • substring() 方法是根据字符位置来提取字符串的子串,第二个参数是要返回的子串的结束位置。

一般来说,如果你知道你要提取的字符串的长度,那么使用 substr() 更为方便;如果你知道你要提取的字符串的开始和结束位置,那么就用 substring()。以上仅仅是在提取子字符串这个简单场景下的比较,如果是在其他更加复杂的情境下,则需要具体问题具体分析。