欲实现:
123456789123===》123 4567 8923;我的手机号;
function nFormat(num){
var z=num.toString().split("");
for(var i=0;i<z.length;i++){
if(i===2||i==6){
z[i]=z[i]+" ";
}
}
return z.join("");
}
因为一般手机号位数和需要空格的地方都固定,所以这个题很好实现;
当然用正则也可以实现;
var a=6221550986411027;
function spacify(num){
var z=num.toString().split("");
for(var i=3;i<=z.length;i+=4){
z[i]=z[i]+" ";
}
return z.join("");
}
console.log(spacify(a));
为了同时都能使用,我改写了一下:
var a=6221550986411027;
var b=17600353988;
function spacify(num,startN,space,sign){
var z=num.toString().split("");
for(var i=startN;i<z.length-space;i+=space){
z[i]=z[i]+sign;
}
return z.join("");
}
console.log(spacify(a,3,4,","));
console.log(spacify(b,2,4," "));
结果是:
6221,5509,8641,1027
176 0035 3988
当然如果是要格式化货币或者金钱的话,也可以这样写
function spacify(num,startN,space,sign){
var z=num.toString().split("");
for(var i=z.length-1-space;i>=0;i-=space){
z[i]=z[i]+sign;
}
return z.join("");
}
采取从后往前修改的策略,结果如下;
6,221,550,986,411,027
当然这样写也有问题,因为有的数字特别大,在转换的过程会丢失末尾数字,不过那是另外的问题了