用正则表达式实现千分位分隔符

原创 2015年07月10日 23:17:43

原创文章,转载请注明:http://blog.csdn.net/chang_yuan_2011/article/details/46836045

千位分隔符就是在数字中,每隔三位数加进一个逗号,实现的想法就是判断数字中是否有超过四个相连的数字,如果有就在他们中间插入逗号,直到找不到四个相连的数字为止。另外一点是拆分应该是从尾部开始。一开始将小数点转换成逗号作为整个搜索的起始位置,整个数句拆分完再把最后一个的逗号还原成小数点。

/**
 * User : YuanChang<yuanchang201344@gmail.com>
 * Date : 2015/7/10.
 * Time : 22:25
 */

function thousands(num){

    num = num.toString();   //将输入的数字转换为字符串

    if(/^-?\d+\.?\d+$/.test(num)){  //判断输入内容是否为整数或小数
        if(/^-?\d+$/.test(num)){    //判断输入内容是否为整数
            num =num + ",00";   //将整数转为精度为2的小数,并将小数点换成逗号
        }else{
            num = num.replace(/\./,',');    //将小数的小数点换成逗号
        }

        while(/\d{4}/.test(num)){ //
            /***
             *判断是否有4个相连的数字,如果有则需要继续拆分,否则结束循环;
             *将4个相连以上的数字分成两组,第一组$1是前面所有的数字(负数则有符号),
             *第二组第一个逗号及其前面3个相连的数字;
             * 将第二组内容替换为“,3个相连的数字,”
             ***/
            num = num.replace(/(\d+)(\d{3}\,)/,'$1,$2');
        }

        num = num.replace(/\,(\d*)$/,'.$1');   //将最后一个逗号换成小数点
    }
}

//测试
thousands(-1);
thousands(-100);
thousands(-10000);
thousands(-1000000);
thousands(-1000.1);
thousands(-1.001);
thousands(-0.1);
thousands(-0.001);

thousands(1);
thousands(100);
thousands(10000);
thousands(1000000);
thousands(1.1);
thousands(1.001);
thousands(1000.1);
thousands(0.001);

测试结果:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

#正则表达式#数值加上千分符

#正则表达式#数值加上千分符 '1234567890.12'.replace(/(\d)(?=(\d{3})+(\.|$))/g, '$1,')==='1,234,567,890.12' 缺点:小...

Android千位分隔符

千位分隔符,其实就是数字中的逗号。

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

android输入金额格式化文本框金额格式控制

引言 Java中对浮点数的输出表示 在Java中浮点数包括基本型float、double,以及对象包装类型的Float和Double,对于这些浮点数的输出,不管是显式地还是隐式地调用toStrin...

Java 数字千位分隔符

java中数字的千位分隔符

oracle 百分比格式转换/千分位格式化数据

--创建包头 CREATE OR REPLACE PACKAGE  system.pk_pub IS    FUNCTION fn_fmt_percent     (       ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)