/*
substr:抽取字符
substr() 方法可在字符串中抽取从 开始 下标开始的指定数目的字符
提示: substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice() 来使用。
注意: substr() 方法不会改变源字符串。
语法:
string.substr(start, length)
参数值:
start:必选。
要抽取的子串的起始下标。必须是数值。默认是 0。
如果是负数,start = string.length + start。
length:可选。
抽取的的字符长度。必须是数值。等于 0/负数 则直接返回空字符串。
如果省略了该参数,那么返回从 string 的开始位置到结尾的字串。
返回值:抽取字符串
*/
String.prototype.mySubstr = function(start = 0, length) {
if (length < 0 || length === 0) return ''
start = start < 0 ? this.length + start : start
let remainingLength = this.length - start // 开始截取位置后的剩余字符长度
length = length ?
(length > remainingLength ? remainingLength : length) :
remainingLength
// if (length) {
// length = length > remainingLength ? remainingLength : length
// } else {
// length = remainingLength
// }
let str = ''
for (let i = start; i < start + length; i++) {
str += this[i]
}
return str
}
// 测试代码
console.log('---------------- 1 ---------------------')
console.log('1===', 'jiaru-beauty'.substr()) // jiaru-beauty
console.log('1===', 'jiaru-beauty'.mySubstr()) // jiaru-beauty
console.log('---------------- 2 ---------------------')
console.log('2===', 'jiaru-beauty'.substr(6)) // beauty
console.log('2===', 'jiaru-beauty'.mySubstr(6)) // beauty
console.log('---------------- 3 ---------------------')
console.log('3===', 'jiaru-beauty'.substr(-6)) // beauty
console.log('3===', 'jiaru-beauty'.mySubstr(-6)) // beauty
console.log('---------------- 4 ---------------------')
console.log('4===', 'jiaru-beauty'.substr(6, 0)) // ''
console.log('4===', 'jiaru-beauty'.mySubstr(6, 0)) // ''
console.log('---------------- 5 ---------------------')
console.log('5===', 'jiaru-beauty'.substr(6, 3)) // bea
console.log('5===', 'jiaru-beauty'.mySubstr(6, 3)) // bea
console.log('---------------- 6 ---------------------')
console.log('6===', 'jiaru-beauty'.substr(6, -3)) // ''
console.log('6===', 'jiaru-beauty'.mySubstr(6, -3)) // ''
console.log('---------------- 7 ---------------------')
console.log('7===', 'jiaru-beauty'.substr(-6, 3)) // bea
console.log('7===', 'jiaru-beauty'.mySubstr(-6, 3)) // bea
console.log('---------------- 8 ---------------------')
console.log('8===', 'jiaru-beauty'.substr(-6, -3)) // ''
console.log('8===', 'jiaru-beauty'.mySubstr(-6, -3)) // ''
console.log('---------------- 9 ---------------------')
console.log('9===', 'jiaru-beauty'.substr(-6, 0)) // ''
console.log('9===', 'jiaru-beauty'.mySubstr(-6, 0)) // ''
JS手写 String substr 方法
于 2024-05-04 20:15:14 首次发布