自己实现string的substring方法 人民币小写转大写,数字反转,正则优化_javascript技巧
程序员文章站
2022-05-30 09:15:43
...
水平有限,不保证我的方案绝对正确,如有错误欢迎指出。
一、自己实现string的substring方法
方法一:用charAt取出截取部分
String.prototype.mysubstring=function(beginIndex,endIndex){
var str=this,
newArr=[];
if(!endIndex){
endIndex=str.length;
}
for(var i=beginIndex;inewArr.push(str.charAt(i));
}
return newArr.join("");
}
//test
"Hello world!".mysubstring(3);//"lo world!"
"Hello world!".mysubstring(3,7);//"lo w"
方法二:把字符串转换成数组然后取出需要部分
String.prototype.mysubstring=function(beginIndex,endIndex){
var str=this,
strArr=str.split("");
if(!endIndex){
endIndex=str.length;
}
return strArr.slice(beginIndex,endIndex).join("");
}
//test
console.log("Hello world!".mysubstring(3));//"lo world!"
console.log("Hello world!".mysubstring(3,7));//"lo w"
方法三:取出头尾部分,然后用replace去掉多余部分,适用于beginIndex较小,字符串长度-endIndex较小的情况
String.prototype.mysubstring=function(beginIndex,endIndex){
var str=this,
beginArr=[],
endArr=[];
if(!endIndex){
endIndex=str.length;
}
for(var i=0;ibeginArr.push(str.charAt(i));
}
for(var i=endIndex;iendArr.push(str.charAt(i));
}
return str.replace(beginArr.join(""),"").replace(endArr.join(""),"");
}
//test
console.log("Hello world!".mysubstring(3));//"lo world!"
console.log("Hello world!".mysubstring(3,7));//"lo w"
二、一万亿以内的人民币小写转大写,暂不考虑连续零的处理
方法一(七行代码实现):
function moneyCaseConvert(num){
var upperArr=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],
levelArr=["","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万"],
numArr=num.toString().split("").reverse(),
result=[];
for(var i=numArr.length-1;i>=0;i--)
result.push(upperArr[numArr[i]]+levelArr[i]);
return result.join("");
}
//Test
console.log(CaseConversion(1234567891234));
//壹万贰仟叁佰肆拾伍亿陆仟柒佰捌拾玖万壹仟贰佰叁拾肆
console.log(CaseConversion(987654321));
//玖亿捌仟柒佰陆拾伍万肆仟叁佰贰拾壹
console.log(CaseConversion(1234));
//壹仟贰佰叁拾肆
三、数字反转,输入123返回321
方法一:
function numReverse(num){
return parseInt(num.toString().split("").reverse().join(""));
}
//Test
console.log(numReverse(123456));
//654321
方法二:
function numReverse(num){
var numArr=num.toString().split(""),
len=numArr.length,
result=0;
for(var i=len-1;i>=0;i--){
result+=numArr[i]*Math.pow(10,i);
}
return result;
}
//Test
console.log(numReverse(123456));
//654321
四、JSONP原理,与Ajax的关系
JSONP原理是利用了script标签动态解析JS的特性,通过动态添加
一、自己实现string的substring方法
方法一:用charAt取出截取部分
复制代码 代码如下:
String.prototype.mysubstring=function(beginIndex,endIndex){
var str=this,
newArr=[];
if(!endIndex){
endIndex=str.length;
}
for(var i=beginIndex;i
}
return newArr.join("");
}
//test
"Hello world!".mysubstring(3);//"lo world!"
"Hello world!".mysubstring(3,7);//"lo w"
方法二:把字符串转换成数组然后取出需要部分
复制代码 代码如下:
String.prototype.mysubstring=function(beginIndex,endIndex){
var str=this,
strArr=str.split("");
if(!endIndex){
endIndex=str.length;
}
return strArr.slice(beginIndex,endIndex).join("");
}
//test
console.log("Hello world!".mysubstring(3));//"lo world!"
console.log("Hello world!".mysubstring(3,7));//"lo w"
方法三:取出头尾部分,然后用replace去掉多余部分,适用于beginIndex较小,字符串长度-endIndex较小的情况
复制代码 代码如下:
String.prototype.mysubstring=function(beginIndex,endIndex){
var str=this,
beginArr=[],
endArr=[];
if(!endIndex){
endIndex=str.length;
}
for(var i=0;i
}
for(var i=endIndex;i
}
return str.replace(beginArr.join(""),"").replace(endArr.join(""),"");
}
//test
console.log("Hello world!".mysubstring(3));//"lo world!"
console.log("Hello world!".mysubstring(3,7));//"lo w"
二、一万亿以内的人民币小写转大写,暂不考虑连续零的处理
方法一(七行代码实现):
复制代码 代码如下:
function moneyCaseConvert(num){
var upperArr=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],
levelArr=["","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万"],
numArr=num.toString().split("").reverse(),
result=[];
for(var i=numArr.length-1;i>=0;i--)
result.push(upperArr[numArr[i]]+levelArr[i]);
return result.join("");
}
//Test
console.log(CaseConversion(1234567891234));
//壹万贰仟叁佰肆拾伍亿陆仟柒佰捌拾玖万壹仟贰佰叁拾肆
console.log(CaseConversion(987654321));
//玖亿捌仟柒佰陆拾伍万肆仟叁佰贰拾壹
console.log(CaseConversion(1234));
//壹仟贰佰叁拾肆
三、数字反转,输入123返回321
方法一:
复制代码 代码如下:
function numReverse(num){
return parseInt(num.toString().split("").reverse().join(""));
}
//Test
console.log(numReverse(123456));
//654321
方法二:
复制代码 代码如下:
function numReverse(num){
var numArr=num.toString().split(""),
len=numArr.length,
result=0;
for(var i=len-1;i>=0;i--){
result+=numArr[i]*Math.pow(10,i);
}
return result;
}
//Test
console.log(numReverse(123456));
//654321
四、JSONP原理,与Ajax的关系
JSONP原理是利用了script标签动态解析JS的特性,通过动态添加