如何处理这个问题的好方法?
我已经考虑过删除逗号然后解析为浮动。
你知道更好/更清洁的方法吗?
谢谢
如何处理这个问题的好方法?
我已经考虑过删除逗号然后解析为浮动。
你知道更好/更清洁的方法吗?
谢谢
parseFloat( theString.replace(/,/g,'') );
我不知道为什么没有人提出这种表达方式——
parseFloat( theString.replace(/[^\d\.]/g,'') );
删除除句点以外的任何非数字字符。您也不需要为此自定义函数/循环,这太过分了。
不。去掉逗号。
您可以使用字符串替换方法,但不能在正则表达式允许的单行中使用。
while(str.indexOf(',')!=-1)str= str.replace(',','');
parseFloat(str);
或者制作一个没有正则表达式的单个表达式=
return parseFloat(str.split(',').join(''));
我会使用正则表达式。
我没有足够的声誉来添加评论,但是对于任何想知道 regex 与 split/join 性能的人来说,这里有一个快速的小提琴:https : //jsfiddle.net/uh3mmgru/
var test = "1,123,214.19";
var t0 = performance.now();
for (var i = 0; i < 1000000; i++)
{
var a = parseFloat(test.replace(/,/g,''));
}
var t1 = performance.now();
document.write('Regex took: ' + (t1 - t0) + ' ms');
document.write('<br>')
var t0 = performance.now();
for (var i = 0; i < 1000000; i++)
{
var b = parseFloat(test.split(',').join(''));
}
var t1 = performance.now();
document.write('Split/join took: ' + (t1 - t0) + ' ms');
我得到的结果是(每个循环 100 万次):
正则表达式:263.335 毫秒
拆分/加入:1035.875 毫秒
所以我认为可以肯定地说正则表达式是这种情况下的方法