Javascript 如何将字符串货币值转换为整数

Javascript 如何将字符串货币值转换为整数,javascript,Javascript,我有像17420的绳子。如何将其更改为整数值。我已经做了 var a = "17,420 ฿" var b = a.split(' ')[0]; console.log(Number(b)) 但我得到南是因为,。 所以我做了如下的事情 var c = b.replace( /,/g, "" ); console.log(Number(c)); 现在,我得到17420作为一个整数 但是,有没有更好的方法可以做到这一点。先拆分,然后通过加入。然后将其解析为浮点。使用.toFixed确定希望保留的

我有像17420的绳子。如何将其更改为整数值。我已经做了

var a = "17,420 ฿"
var b = a.split(' ')[0];
console.log(Number(b))
但我得到南是因为,。 所以我做了如下的事情

var c = b.replace( /,/g, "" );
console.log(Number(c));
现在,我得到17420作为一个整数

但是,有没有更好的方法可以做到这一点。

先拆分,然后通过加入。然后将其解析为浮点。使用.toFixed确定希望保留的小数位数

console.log ParseFloat17420฿.split'[0].split','.join'.toFixed3
; 你可以从去掉任何不是数字或小数点的东西开始。string.replace和一些RegExp将有所帮助。然后使用parseFloat或Number将类似字符串的数字转换为数字。不要将十进制数转换为整数,因为您正在处理的似乎是货币

const num = parseFloat(str.replace(/[^0-9.]/g, ''))
但在一天结束时,您不应该进行字符串到数字的转换。将数字存储为数字,然后将其格式化为字符串以供显示,而不是相反。

删除逗号后可以使用parseInt

var a = "17,420 ฿"
console.log(parseInt(a.replace(",",""), 10))

o/p -> 17420

这将替换所有非数字字符。。。这有用吗?

您可以使用如下正则表达式轻松删除所有非数字:

a.replace(/\D/g, '');
然后使用parseInt获取整数值:

parseInt(b);
合并:

var result = parseInt(a.replace(/\D/g, ''));

你想要17420还是17.42?我想问题是是否有更有效的方法。我认为OP已经有了一个有效的解决方案。@ADyson除了美国标准之外,还有其他含义。欧式含义通常使用,作为小数点分隔符,和。作为一个千分位,美国化的内涵正好相反。使用图书馆。不需要重新发明轮子。我投票结束这个问题,因为我认为关于改进RegEx上的工作代码的问题也是imo的方法。请注意,区域格式可能会影响正确的RegEx。例如在某些区域性中可能意味着1000个分隔符,如果解析,最终可能会将1.000减少到1,因此正确的做法是删除字符。此外,在这些情况下以及其他一些情况下,逗号可能是十进制分隔符,因此1,23可能突然变为123。在这种情况下,逗号应替换为点。但在去除其他斑点时,应注意不要将其擦掉。其他文化可能有其他的分隔物,比如空间。TL;DR-这是一个难题。toFixed3不能对像650฿这样的数字产生问题吗?因为它不是一个真正的小数,而是一个千位指示器。看,在荷兰这里650和650.000是不一样的。@Sparky,因为OP 17420已经和17.420不一样了。如果那是一个银行账户,某人就损失了99.9%的存款。@Sparky我已经提供了一个备选方案。如果输入有小数点,这将产生不正确的结果,例如,$3.50将同时去掉美元符号和小数分隔符,结果将是350。这与OP正在做的相比有什么好处?他已经在剥离逗号并解析结果。这种方法忽略了分数的存在,但在其他方面是相同的。
var result = parseInt(a.replace(/\D/g, ''));