gpt4 book ai didi

javascript - 从表示货币值的字符串中提取整数

转载 作者:行者123 更新时间:2023-11-28 18:31:50 26 4
gpt4 key购买 nike

我有一个代表货币值的字符串流,我需要从中提取整数。

这些字符串可能包含或不包含“$”、“€”、“-”、空格“”等字符。和“,”可以交替分隔小数点和数字组。这些是字符串的示例以及我需要从中提取的值示例:

"1,423,433.00" = 1423433
"1.355,22€" = 1355
" CAD$764.35" = 764
"$734242" = 734242
"$ 234.234,55" = 234234
"545,767$" = 545767
"765 778 00" = 765778
"765.823,888" = 765.823

我尝试使用

.replace(/[^\d]/g, '');

但是“$ 234.234,55”结果是23423455,我需要不带小数的234234。我想我需要先处理小数。

我也遇到过小数点用“,”或“.”分隔的情况。并且可以有 3 位数字,例如:“1.365.823,803”或“12244.222”。

如果我有“123.444”,是什么让我知道“.”与小数无关的是数字永远不会低于 10000。

如何实现提取这些数字的函数?

编辑:

我认为第一步是删除除“,”或“.”之外的所有字符。

然后,我们就可以找到小数点符号,从左边开始寻找第一个符号。

如果它出现在 2 位数字之后,我们就知道它是一个小数符号。

如果它出现在 3 位数字之后,我们会查找下一个符号以查看它是否不同。

如果与第一个相同则不是小数符号。

如果不同,则第一个为十进制。

如果没有其他符号,我们知道第一个是十进制,因为所有数字都大于 1000,所以如果我们有 1233.444,我们就知道“.”。是小数符号。

最佳答案

如果您想去掉数字的小数部分,并且您肯定总是会在点符号后面出现,您可以使用下一组步骤来删除小数部分并仅获取值。

' CAD$764.35'.split('.')[0].replace(/[^\d]/g, ''); // 764

在我看来,更好的方法是使用替换和正则表达式从字符串中删除所有非数字/点字符,将字符串解析为数字。

为了支持您拥有的所有情况,首先您必须分析字符串并验证正在使用哪个分隔符号并相应地调整正则表达式。当您使用 parseInt 将字符串粗略为数字时,您不必关心小数分隔符是 还是 .

parseInt('3452,90') // 3452
parseInt('3452.90') // 3452

但是您必须从字符串中删除其他分隔符号,否则当您尝试解析它们时会导致错误。

parseInt('3,452.90') // 3

关于javascript - 从表示货币值的字符串中提取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37839037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com