代码之家  ›  专栏  ›  技术社区  ›  Mritunjay Upadhyay

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

  •  0
  • Mritunjay Upadhyay  · 技术社区  · 6 年前

    我有一串像“17420”。如何将其更改为整数值。我已经做了

    var a = "17,420 ฿"
    var b = a.split(' ')[0];
    console.log(Number(b))
    

    但我得到南是因为 ,

    var c = b.replace( /,/g, "" );
    console.log(Number(c));
    

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

    但是,有没有更好的方法呢。

    5 回复  |  直到 6 年前
        1
  •  3
  •   Joseph    6 年前

    你可以从去掉任何不是数字或小数点的东西开始。 string.replace 一点RegExp会有帮助的。然后使用 parseFloat Number 把那个数字像字符串一样转换成一个数字。不要转换成整数(一个小数位),因为你要处理的似乎是货币。

    const num = parseFloat(str.replace(/[^0-9.]/g, ''))
    

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

        2
  •  2
  •   HelgeFox    6 年前

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

    a.replace(/\D/g, '');
    

    parseInt(b);
    

    var result = parseInt(a.replace(/\D/g, ''));
    
        3
  •  1
  •   Sruthi    6 年前

    你可以用 parseInt 去掉逗号后

    var a = "17,420 ฿"
    console.log(parseInt(a.replace(",",""), 10))
    
    o/p -> 17420
    
        4
  •  1
  •   Daniel Furutani    6 年前
    Number(a.replace(/[^0-9.]/g, ""))
    

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

        5
  •  0
  •   kockburn    6 年前

    , 然后加入via . 然后将其解析为一个float。使用 .toFixed() 确定您希望的小数位数。

    console.log(
      parseFloat("17,420 ฿".split(' ')[0].split(',').join('.')).toFixed(3)
    );

    作为一个函数:

    const convert = (str) => {
      return parseFloat(str.split(' ')[0].split(',').join('.')).toFixed(3)
    }
    
    console.log(convert("17.1234 $"));
    console.log(convert("17 $"));
    console.log(convert("17,2345 $"));

    备选方案:

    const convert = (str) => {
      let fixedTo = 0;
      const temp = str.split(' ')[0].split(',');
      if(temp.length > 1){
        fixedTo = temp[1].length;
      }
    
      return parseFloat(temp.join('.')).toFixed(fixedTo)
    }
    
    console.log(convert("17,1234 $"));
    console.log(convert("17,123 $"));
    console.log(convert("17,1 $"));
    console.log(convert("17 $"));