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

时间:2018-09-13 13:05:04

标签: javascript

我有类似“ 17,420฿”的字符串。如何将其更改为整数值。我已经完成了

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

但是由于,,我得到了NaN。 所以我做得像下面一样

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

现在,我得到的是整数17420。

但是,有没有更好的方法来做呢?

4 个答案:

答案 0 :(得分:3)

您可以先剥离所有非数字或小数点的内容。 string.replace和一些RegExp会有所帮助。然后使用parseFloatNumber将类似数字的字符串转换为数字。不要转换为整数(无十进制数字),因为您要处理的似乎是货币。

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

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

答案 1 :(得分:2)

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

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

然后使用parseInt获取整数值:

parseInt(b);

组合:

var result = parseInt(a.replace(/\D/g, ''));

答案 2 :(得分:1)

Number(a.replace(/[^0-9.]/g, ""))

这将替换所有非数字字符...对您有帮助吗?

答案 3 :(得分:0)

拆分为,,然后通过.加入,然后将其解析为一个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 $"));