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

Mri*_*yay 1 javascript

我有像“17,420 \xe0\xb8\xbf”这样的字符串。如何将其更改为整数值。我已经做好了

\n\n
var a = "17,420 \xe0\xb8\xbf"\nvar b = a.split(\' \')[0];\nconsole.log(Number(b))\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我得到 NaN 因为,.\n所以我做了如下

\n\n
var c = b.replace( /,/g, "" );\nconsole.log(Number(c));\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,我得到 17420 作为一个整数。

\n\n

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

\n

Jos*_*eph 5

您可以首先去掉任何不是数字或小数点的内容。string.replace一些正则表达式会有所帮助。然后使用parseFloatorNumber将类似数字的字符串转换为数字。不要转换为整数(无小数的数字),因为您正在处理看似货币的内容。

const num = parseFloat(str.replace(/[^0-9.]/g, ''))
Run Code Online (Sandbox Code Playgroud)

但最终,您不应该进行字符串到数字的转换。将数字存储为数字,然后将其格式化为字符串以供显示,而不是相反。

  • 请注意,区域格式可能会影响正确的正则表达式。例如,“.”在某些文化中可能意味着“千”分隔符,如果解析,最终可能会将“1.000”减少为“1”,因此正确的做法是删除该字符。此外,在这些情况下(以及其他一些情况),逗号可能是小数点分隔符,因此“1,23”可能会突然变成“123”。在这种情况下,逗号应该替换为点。但在去除其他点时要小心,不要将其擦掉。其他文化可能有其他分隔符,例如空格。TL;DR - 这是一个难题。 (2认同)