substr
方法是 JavaScript 中用于字符串截取的一个函数。它接受两个参数:起始索引和截取的长度。当起始索引为负数时,substr
会从字符串的末尾开始计算位置。
当 substr
的第一个参数(起始索引)为负数时:
-1
表示最后一个字符,-2
表示倒数第二个字符,依此类推。let str = "Hello, World!";
// 正常使用
console.log(str.substr(7, 5)); // 输出: "World"
// 使用负数起始索引
console.log(str.substr(-6, 5)); // 输出: "World"
问题: 使用负数索引时,如果绝对值大于字符串长度,会得到空字符串。
console.log("abc".substr(-4, 2)); // 输出: ""
解决方法: 在使用负数索引前,检查其绝对值是否超出了字符串的长度。
function safeSubstr(str, start, length) {
let adjustedStart = start < 0 ? Math.max(0, str.length + start) : start;
return str.substr(adjustedStart, length);
}
console.log(safeSubstr("abc", -4, 2)); // 输出: "ab"
通过这种方式,可以确保即使提供了不合理的负数索引,也能安全地处理并避免错误的结果。
总之,substr
方法中的负数索引提供了一种灵活的方式来处理字符串的尾部截取需求,但在使用时需要注意边界条件的处理。
领取专属 10元无门槛券
手把手带您无忧上云