【问题标题】:How to extract decimal number from string using JavaScript如何使用 JavaScript 从字符串中提取十进制数
【发布时间】:2012-05-02 10:22:57
【问题描述】:

我想从具有值$265.12+$265.12-$0.0+$0.0- 的字母数字字符串(比如金额)中提取十进制数265.12$0.0- 并使用它在JSP 中应用struts 逻辑标记。不确定如何在 JavaScript 的帮助下提取数字。

【问题讨论】:

    标签: javascript regex jsp struts-1


    【解决方案1】:

    你可以像这样使用正则表达式,

    Live Demo

    var amount = "$265.12+";
    var doublenumber = Number(amount.replace(/[^0-9\.]+/g,""));
    

    【讨论】:

      【解决方案2】:

      如果不进行错误检查,则可以执行以下操作:

      var string = "$123123.0980soigfusofui"
      var number = parseFloat(string.match(/[\d\.]+/))
      

      123123.098

      【讨论】:

      • 我相信正则表达式可以缩短为 /[\d.]+/ - 在 JS 中偶然发现
      【解决方案3】:

      也试试这个,

      <script type="text/javascript">
      function validate(){
          var amount =  $("#amount").val();
          alert(amount.split(".")[1]);
      } </script>
      </head> 
      <body>
      <input type="hidden" name="amount" id="amount" value="25.50">
      <input type="submit" onclick="validate();">
      

      【讨论】:

        【解决方案4】:

        你可能对这个用于格式化货币的库感兴趣http://josscrowcroft.github.com/accounting.js/

        【讨论】:

        • 当他需要提取而不是打印时,他怎么能做到?
        • 有一个名为 unformat() 的方法返回数字。例如。会计.unformat("$ 12,345,678.90"); // 12345678.9
        【解决方案5】:

        一个更优雅的解决方案,也是一种避免0.7700000004 javascript数学的方法:

        var num = 15.3354; Number(String(num).substr(String(num).indexOf('.')+1));

        结果将始终是精确的小数位数。还有一个prototype 以便于使用

        Number.prototype.getDecimals = function () { return Number(String(this).substr(String(this).indexOf('.')+1)); }

        所以现在只需15.6655.getDecimals() ==&gt; 6655

        【讨论】:

          【解决方案6】:

          使用:

          var str = parseFloat("$265.12".match(/[\d\.]+/))
          alert(str % 1); => 0.12000000000000455
          

          【讨论】:

            猜你喜欢
            • 2021-12-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-04
            • 2022-01-25
            • 1970-01-01
            相关资源
            最近更新 更多