JS如何将字符串转成数字,情况比较复杂

qq_27259783 2017-05-25 03:26:16
画面上的控件显示数量,这个控件的值是根据设定来显示的,有的时候显示123,456.78,有的时候显示123.456,78,就是小数点和千位符是根据设定来的,然后我现在JS要去取这个控件的值,转成标准的数字进行计算(转成123456.78),如何才能成功转换?
...全文
725 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_27259783 2017-05-25
  • 打赏
  • 举报
回复
引用 7 楼 sinat_34353062 的回复:

            var a = "1234,56.646,54";
            var b = '';
            for(var i=(a.length-1); i>-1; i--) {
                if(a[i] == ',' || a[i] == '.') {
                    b = '.' + String(b);
                    a = a.slice(0,i).replace(',','');
                    b = a.replace('.','') + b;
                    break;
                }
                b = String(a[i]) + String(b);
            }
            console.log(b);
感谢大神,恍然大悟的感觉,问题已经解决
qq_27259783 2017-05-25
  • 打赏
  • 举报
回复
引用 6 楼 zzgzzg00 的回复:
var str=['123.456,78','123,456.78']; var reg=/[.,](?=.*[,.])/g; for(var i=0;i<str.length;i++){ console.log(parseFloat(str[i].replace(reg,'').replace(',','.'))); }
感谢大神,这个正则好厉害,问题已经解决
漠子凉 2017-05-25
  • 打赏
  • 举报
回复

            var a = "1234,56.646,54";
            var b = '';
            for(var i=(a.length-1); i>-1; i--) {
                if(a[i] == ',' || a[i] == '.') {
                    b = '.' + String(b);
                    a = a.slice(0,i).replace(',','');
                    b = a.replace('.','') + b;
                    break;
                }
                b = String(a[i]) + String(b);
            }
            console.log(b);
似梦飞花 2017-05-25
  • 打赏
  • 举报
回复
var str=['123.456,78','123,456.78']; var reg=/[.,](?=.*[,.])/g; for(var i=0;i<str.length;i++){ console.log(parseFloat(str[i].replace(reg,'').replace(',','.'))); }
漠子凉 2017-05-25
  • 打赏
  • 举报
回复
把逗号去掉嘛 var a; a.replace(',','')
qq_27259783 2017-05-25
  • 打赏
  • 举报
回复
我现在有个想法,因为不管什么设定,小数点右边肯定是没有别的符号了,那从右往左第一个符号替换成点,剩下的符号全部替换成空应该就可以实现了,可是不知道具体怎么实现,有没有大神指教下?
似梦飞花 2017-05-25
  • 打赏
  • 举报
回复
按情况替换逗号或者点啊
qq_27259783 2017-05-25
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:

var str=['123.456,78','123,456.78'];
    var reg=/[^\d\.]/g;
    for(var i=0;i<str.length;i++){
        console.log(parseFloat(str[i].replace(reg,'')));
    }
这个正则是把逗号全部去除吗?可是在123.456,78的场合,逗号就是小数点,点才是千位符,这样得出的结果就不对了吧
似梦飞花 2017-05-25
  • 打赏
  • 举报
回复

var str=['123.456,78','123,456.78'];
    var reg=/[^\d\.]/g;
    for(var i=0;i<str.length;i++){
        console.log(parseFloat(str[i].replace(reg,'')));
    }

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧