给字符串添加分隔符

2018-06-12  本文已影响0人  bby365

问题

1234567890.12 变成 1,234,567,890.12

分析:
1.将字符串分成两部分成整数 和 小数两部分
2.整数部分从后向前每三位添加一个','
3.对字符串的处理,不会改变原字符串,故采用拼接字符串


1.indexof('.')  分割字符串  同时要注意没有小数的情况
2.循环添加','  注意结束条件 
3.最后在将 3 个部分合并

function fn(str){
    var ilen = str.indexOf('.');
    ilen = (ilen === -1) ? str.length :ilen
    var newstr='';
    for(var i = ilen ; i > 3 ; i-=3){
        newstr = ',' + str.slice(i-3,i) + newstr;
    }
    newstr = str.slice(0,i) + newstr + str.slice(ilen);
    return newstr;
}
console.log(fn("234"))

1.indexOf(',') 分割字符串
2.对3求余 ,判断正则替换开始的位置
3. 拼接3个部分的字符串

function fn1(str){
    var ilen = str.indexOf('.');
    ilen = (ilen === -1) ? str.length :ilen;
    var i = ilen % 3 ? ilen % 3 : 3; 
        

    var regStr = str.slice(i,ilen);
    var newstr = regStr.replace(/(\d{3})/g,',$1');

    newstr =  str.slice(0,i) + newstr + str.slice(ilen);
    return newstr;
}
console.log(fn1("23"))

1. 没有小数点的情况,两种方法处理一样
ilen = (ilen === -1) ? str.length : ilen;
2. 整数部分 刚好只有3位数情况 
非正则 :for  循环中 i > 3
正则: var i = ilen % 3 ? ilen % 3 : 3; 
避免出现  fn("234")   // ,234
3.两种方法 都是将字符串分成3部分 进行处理拼接
[i <= 3]  + [,234,567,890] + [.123456]

上一篇下一篇

猜你喜欢

热点阅读