当前位置: 首页 > 工具软件 > RightJS > 使用案例 >

自制 js 的 trim、right、left、instrRev、instr、mid 函数

袁奇文
2023-12-01

//用惯了 VB 系列语法的 instr 和 mid 函数,在 js 里面处理字符串总是感觉束手束脚

//跟 Basic 语法比起来,其他语言的字符串处理能力都是渣渣!!!因此,必须自己写个仿 Basic 语法的常用字符串处理函数库来用!!!

function trim(s){return s.replace(/(^\s*)|(\s*$)/g,"");} //清除字符串 s 前后英文空格

function revright(s,l){ //从 s 中从左侧取去除 l 长度右侧字符串的字符串
	var sl=len(s);
	return mid(s,1,sl-l);
}

function right(s,l){ //从 s 中从右侧取 l 长度的字符串
	var sl=len(s);
	return mid(s,sl-l+1,l);
}
function left(s,l){ //从 s 中从左侧取 l 长度的字符串
	return mid(s,1,l);
}

function instr(str,s){ //在 str 中查找字符串 s 第一次出现的位置,从左侧起计,起点为 1
	var dotn=str.indexOf(s);
	if(dotn<0){return 0;}else{return (dotn*1+1);}
}

function instrRev(str,s){ //在 str 中从右侧起查找字符串 s 第一次出现的位置,位置从左侧起计,起点为 1
	var dotn=str.lastIndexOf(s);
	if(dotn<0){return 0;}else{return (dotn*1+1);}
}
function len(s){ //返回字符串 s 的长度,数字则以十进制长度计
	if(isUndefined(s)){return 0;}//参数不足
	if(isNaN(s)){//非数字isNaN
		var sln=s.length;
	}else{
		//数值转字符
		var str=s.toString(10);
		var sln=str.length;
	}
	return sln;
}
function mid(str,s,l){  //从字符串 str 中从 s 位置起取 l 长度的字符串,起点为 1,忽略参数 l 则取自 s 位置起的后面全部字符串
	var outstr='';
	if(isUndefined(s)){return '';}//参数不足
	if(isUndefined(str)){return '';}//参数不足
	var sln=str.length;
	if(isNaN(s)){return '';}//参数非法
	//console.log(isNaN(s));
	s=s*1;
	if(isUndefined(l)){ //非数字isNaN		
		if(s>sln ){ //起点大于长度
			return '';
		}else{
			if((s-1)>sln ){//空
				return '';
			}else{
				for(var i=s;i<sln+1;i++){ //没有长度信息,取到完
					outstr+=str.charAt(i-1);//charAt从0计字符串,故要减一
				}		
				return outstr;
			}
		}	
	}else{
		if(isNaN(l)){ //非数字
			if(s>sln ){ //起点大于长度
				return '';
			}else{
				if((s-1)>sln ){//空console.log(sln);
					return '';
				}else{
					for(var i=s;i<sln+1;i++){ //没有长度信息,取到完
						outstr+=str.charAt(i-1);//charAt从0计字符串,故要减一
					}		
					return outstr;
				}
			}
		}else{
			l=l*1;
			if(s>sln ){ //起点大于长度
				return '';
			}else{
				if((s+l-1)>sln ){//起点加长度减1大于长度,只取剩余字符,取到完
					for(var i=s;i<sln+1;i++){
						outstr+=str.charAt(i-1);//charAt从0计字符串,故要减一
					}		
					return outstr;
				}else{
					for(var i=s;i<(s+l);i++){ //正常取法console.log(sln);
						outstr+=str.charAt(i-1);//charAt从0计字符串,故要减一
					}		
					return outstr;
				}
			}
		}
	}
}

function isUndefined(value){   
	//获得undefined,保证它没有被重新赋值   
	var undefined = void(0);
	return value === undefined; 
} 

 

 类似资料: