//用惯了 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;
}