水平有限,不保證我的方案絕對(duì)正確,如有錯(cuò)誤歡迎指出。
一、自己實(shí)現(xiàn)string的substring方法
方法一:用charAt取出截取部分
代碼如下:
String.prototype.mysubstring=function(beginIndex,endIndex){
var str=this,
newArr=[];
if(!endIndex){
endIndex=str.length;
}
for(var i=beginIndex;i<endIndex;i++){
newArr.push(str.charAt(i));
}
return newArr.join("");
}
//test
"Hello world!".mysubstring(3);//"lo world!"
"Hello world!".mysubstring(3,7);//"lo w"
方法二:把字符串轉(zhuǎn)換成數(shù)組然后取出需要部分
代碼如下:
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較小,字符串長(zhǎng)度-endIndex較小的情況
代碼如下:
String.prototype.mysubstring=function(beginIndex,endIndex){
var str=this,
beginArr=[],
endArr=[];
if(!endIndex){
endIndex=str.length;
}
for(var i=0;i<beginIndex;i++){
beginArr.push(str.charAt(i));
}
for(var i=endIndex;i<str.length;i++){
endArr.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"
二、一萬(wàn)億以內(nèi)的人民幣小寫轉(zhuǎn)大寫,暫不考慮連續(xù)零的處理
方法一(七行代碼實(shí)現(xiàn)):
代碼如下:
function moneyCaseConvert(num){
var upperArr=["零","壹","貳","叁","肆","伍","陸","柒","捌","玖"],
levelArr=["","拾","佰","仟","萬(wàn)","拾","佰","仟","億","拾","佰","仟","萬(wàn)"],
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));
//壹萬(wàn)貳仟叁佰肆拾伍億陸仟柒佰捌拾玖萬(wàn)壹仟貳佰叁拾肆
console.log(CaseConversion(987654321));
//玖億捌仟柒佰陸拾伍萬(wàn)肆仟叁佰貳拾壹
console.log(CaseConversion(1234));
//壹仟貳佰叁拾肆
三、數(shù)字反轉(zhuǎn),輸入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;