substring()
和 substr()
都是 JavaScript 字符串对象的方法,用于截取字符串。它们的区别在于:
- 参数不同:
substring()
方法接受两个参数,分别表示起始位置和结束位置(不包括结束位置对应的字符),而substr()
方法接受两个参数,第一个参数表示起始位置,第二个参数表示要截取的字符个数。 - 负数处理方式不同:当传入负数参数时,
substring()
方法会将其视为 0,而substr()
方法则将其视为相对于字符串末尾的偏移量。
下面是一些具体的例子:
var str = "hello world";
console.log(str.substring(3, 7)); // 输出 "lo w"
console.log(str.substr(3, 4)); // 输出 "lo w"
console.log(str.substring(7, 3)); // 输出 "lo w"(起始位置和结束位置会自动调整)
console.log(str.substr(7, -2)); // 输出 ""(负数参数转换为 0)
console.log(str.substring(-3, 8)); // 输出 "hello "(负数参数转换为 0)
console.log(str.substr(-3, 2)); // 输出 "rl"(-3 表示倒数第三个字符,2 表示截取两个字符)
需要注意的是,由于 substring()
和 substr()
方法都是截取字符串的操作,因此如果传入的参数超出了字符串的长度范围,它们都会自动调整参数以适应字符串的长度。但是这种行为可能会导致一些意想不到的结果,因此在使用这两个方法时需要特别小心。