【问题标题】:JavaScript separate currency into number value and currency symbol/nameJavaScript 将货币分为数值和货币符号/名称
【发布时间】:2018-03-06 03:21:29
【问题描述】:

我从 Web 服务获取货币值,我想在数字输入(浮点部分)中显示它,它是输入旁边的简单标签上的货币符号/名称。

我从网络服务获得的数据示例:

$ 1.200,05

1200.05 雷亚尔

kr。 1,200.05

37,200.05 克朗

300 美元

500.0 欧元

可以看到数据非常混杂。

符号/货币名称可以在数字值之前或之后,符号和数字之间可以有空格,或者根本没有空格。它也可以在货币名称中包含一个,我仍然想保留它(比如丹麦克朗:kr.

小数点可以是 '.' 或 ',',并且可以跟任意位数的小数。 与 千位分隔符 相同:它可以是 '.'或','

我有以下 sn-p 来获取数字值,但是我在获取货币字符串部分时遇到了问题:

if (!isNaN(cost.charAt(0))) { //check whether it starts with number or string, to adjust the regex
    var regex = /([+-]?[0-9|^.|^,]+)[\.|,]([0-9])/
    var result = regex.exec(cost);
    var floatResult = result? result[1].replace(/[.,]/g, "")+ "." + result[2] : cost.replace(/[^0-9-+]/g, "");
    return floatResult;
}
else {
    var regex = /([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$/igm
    var result = regex.exec(cost);
    var floatResult = result? result[1].replace(/[.,]/g, "")+ "." + result[2] : cost.replace(/[^0-9-+]/g, "");
    return floatResult;
}   

我在我的 web 应用程序中使用 jQuery 和 AngularJS,所以如果在其中一个的帮助下有更简单的方法,那就太好了。

【问题讨论】:

    标签: javascript jquery angularjs angularjs-directive


    【解决方案1】:

    我不确定如何使用正则表达式来做到这一点,但如果没有正则表达式我可能会做的是:

    a) 记录firstnumeric character的索引

    b) 记录最后一个数字字符的索引

    c) 从第一个到最后一个数字字符中获取子字符串并将其转换为数字,Number(numerics)(您必须在此步骤中删除数字之间的逗号)

    d) 如果第一个数字字符索引为 0,则货币符号/名称将在字符串的末尾,最后一个数字字符之后

    e) 否则它将在字符串的前面,第一个数字字符之前。


    编辑

    如果您可以确定作为响应返回的内容始终包含一个分隔值和货币符号的空格,则您可以简化整个事情。如果这是真的(就像在您的示例中那样),您可以使用 string.split(' ') 获取两个字符串的数组,并检查哪个是数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多