substr和substring函数都是用来截取字符串的方法,但是两者有以下几个区别:
参数不同:substr函数接受两个参数,第一个参数是起始位置,第二个参数是要截取的字符数。而substring函数接受两个参数,第一个参数是起始位置,第二个参数是终止位置(不包括终止位置的字符)。
负数处理不同:当substr函数的第一个参数为负数时,表示从字符串末尾开始计算起始位置。而当substring函数的参数为负数时,会被自动转换为0。
终止位置超出字符串长度:当substr函数的第二个参数大于字符串长度时,会截取到字符串末尾。而当substring函数的第二个参数大于字符串长度时,会被自动转换为字符串长度。
返回值不同:substr函数返回从起始位置开始的指定长度的子字符串。substring函数返回从起始位置到终止位置的子字符串。
示例:
var str = "Hello World!";
console.log(str.substr(0, 5)); // 输出 "Hello"
console.log(str.substring(0, 5)); // 输出 "Hello"
console.log(str.substr(6, 5)); // 输出 "World"
console.log(str.substring(6, 11)); // 输出 "World"
console.log(str.substr(-6)); // 输出 "World!"
console.log(str.substring(-6)); // 输出 "Hello World!"
console.log(str.substr(0, 20)); // 输出 "Hello World!"
console.log(str.substring(0, 20)); // 输出 "Hello World!"
总的来说,substr函数更灵活,可以通过指定起始位置和字符数来截取字符串。而substring函数更直观,可以通过指定起始位置和终止位置来截取字符串。