我有类似“ 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。
但是,有没有更好的方法来做呢?
答案 0 :(得分:3)
您可以先剥离所有非数字或小数点的内容。 string.replace
和一些RegExp会有所帮助。然后使用parseFloat
或Number
将类似数字的字符串转换为数字。不要转换为整数(无十进制数字),因为您要处理的似乎是货币。
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 $"));