用js实现big、endsWith、chatAt、split、indexOf、repeat、

用js实现原型方法系列之字符串系列

1. big

String.prototype._big = function(){
	let tempStr = this
	return '<big>' + tempStr + '</big>'
}


var str = 'big'
document.write('<br>'+ str._big())	// 大号字体 big

2. endsWith

检查字符串末尾的值是否与传入的值一样,是否返回true/false

/*
 * @param {string} str 值1,传入检测是否在字符串末尾的值
 * @param {number} length 值2,可以设置从哪里为末尾开始检测
 * @return {boolean}
 */
String.prototype._endsWith= function(str,length){
	if(length === undefined || length>this.length){
		length = this.length
	} 
	let len = length - str.length
	let val = ''
	for(let i=len;i<length;i++){
		val += this[i]
	}
	return val === str
}


let str = 'abcaa'
console.log("str._endsWith('aaa'):::", str._endsWith('aa',5)) // true

3. charAt

/*
 * @param {string | number} index 要查找的索引
 * @return 索引对应的值,找不到返回空串
 */
String.prototype._charAt = function(index){
	for(let i=0;i<this.length;i++){
		if(index == i){
			return this[i]
		}
	}
	return ''
}


let str = 'abcaa'
console.log("str._charAt('aaa'):::", str._charAt('1')) // b

4. split

/**
 * @param {string} str 要分割的位置
 * @return {array} tempArr 分割后的数组
 * */
String.prototype._split = function(str){
	let tempArr = []
	for(let i=0;i<this.length;i++){
		if(this[i] !== str){
			tempArr[tempArr.length] = this[i]
		}
	}
	return tempArr
}


let str = 'a-b-c-a-a'
console.log("str._charAt('aaa'):::", str._split("-")) 

5. indexOf

/**
 * @param {string} str 要查找的参数
 * @param {number} index 从哪里开始查找
 * @return {number} str所在的索引,-1为未找到
 * */
String.prototype._indexOf = function(str,index){
	let len = str.length
	let start = 0
	let returnIndex = 0
	for(let i=index || 0;i<this.length;i++){
		if(this[i] === str[start]){
			start++
			returnIndex = i
		}else{
			if(start === len){
				return returnIndex - len + 1
			}else{
				start = 0
			}
		}
	}
	return -1
}
let str = 'abc aaa dds bbb aaa'
console.log(str._indexOf('aaa')) // 4

6. repeat

/**
 * @param {string} num 复制几次
 * @return {string} 复制后的字符串
 * */
String.prototype._repeat = function(num){
	let str = ''
	if(typeof num !== 'number' || num == Infinity){
		throw new TypeError('类型不对 or 太大了')
	}else{
		num = Math.floor(num)
		for(let i=0;i<num;i++){
			str += this
		}
	}
	return str
}
let str = 'abc'
console.log(str._repeat(2)) // abcabc

match

// 这个是不可能实现的,我还要实现一个正则我的天,只是会用就算了。
// 这个是js字符串的一个查找匹配字符串的方法,将匹配正则的结果push进一个数组里并返回它。

matchAll

// 实在不知道有什么用处了
var regexp = /t(e)(st(\d?))/g;
var str = 'test1test2';

console.log([...str.matchAll(regexp)]) 
// (2) […]
// 0: Array(4) [ "test1", "e", "st1", … ]
// 1: Array(4) [ "test2", "e", "st2", … ]length: 2

7. padStart

填充字符串,输入填充至几位,将循环传入的字符串,最终+=原字符串并返回它。

/**
 * @param {number} length 填充几位
 * @param {string} str 填充的字符串
 * @return {string} 填充后的字符串
 * */
String.prototype._padStart = function(length,str){
	str = String((typeof str ==='undefined'?' ':str))
	if(this.length > length || str == '') return String(this);
	let tempStr = ''
	let index = 0
	length = length - this.length
	for(let i=0;i<length;i++){
		if(index>=str.length){
			index = 0
		}
		tempStr+=str[index]
		index++
	}
	return tempStr + this
}
let str = 'abc'
console.log(str._padStart(10,undefined).length) // 10

7. padEnd

跟上面的一样,只不过是填充的位置反了

/**
* @param {number} length 填充几位
 * @param {string} str 填充的字符串
 * @return {string} 填充后的字符串
 * */
String.prototype._padEnd = function(length,str){
	str = String((typeof str ==='undefined'?' ':str))
	if(this.length > length || str == '') return String(this);
	let tempStr = ''
	let index = 0
	length = length - this.length
	for(let i=0;i<length;i++){
		if(index>=str.length){
			index = 0
		}
		tempStr+=str[index]
		index++
	}
	return this + tempStr
}
let str = 'abc'
console.log(str._padEnd(10,'dd')) // abcddddddd
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值