美文网首页
给字符串添加分隔符

给字符串添加分隔符

作者: bby365 | 来源:发表于2018-06-12 15:25 被阅读0次

    问题

    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]
    
    

    相关文章

      网友评论

          本文标题:给字符串添加分隔符

          本文链接:https://www.haomeiwen.com/subject/nkzleftx.html