📅  最后修改于: 2023-12-03 15:16:08.985000             🧑  作者: Mango
在 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
位置)的子串。其中 start
和 end
表示的都是索引位置,如果出现负数,则会被转换为 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()
。以上仅仅是在提取子字符串这个简单场景下的比较,如果是在其他更加复杂的情境下,则需要具体问题具体分析。