NodeJS:如何将带单位的货币字符串转换为数值?
解决NodeJS中带单位货币字符串转数值的问题
直接给你一个实用的函数,专门处理你说的场景,代码注释写得很清楚,新手也能看懂:
function convertCurrencyToNumber(currencyStr) { // 移除货币符号等无关字符,只保留数字、小数点、K/M const cleanedStr = currencyStr.replace(/[^0-9.KM]/g, ''); let multiplier = 1; let numPart = cleanedStr; // 判断末尾单位,设置对应倍数并截取数字部分 if (cleanedStr.endsWith('K')) { multiplier = 1000; numPart = cleanedStr.slice(0, -1); } else if (cleanedStr.endsWith('M')) { multiplier = 1000000; numPart = cleanedStr.slice(0, -1); } // 转成数值后计算,用Math.round确保返回整数(不需要整数可直接返回乘积) return Math.round(parseFloat(numPart) * multiplier); } // 测试示例 console.log(convertCurrencyToNumber('$50K')); // 输出 50000 console.log(convertCurrencyToNumber('$25.5M')); // 输出 25500000 console.log(convertCurrencyToNumber('$123')); // 输出 123 console.log(convertCurrencyToNumber('0.8K')); // 输出 800 console.log(convertCurrencyToNumber('1.25M')); // 输出 1250000
逻辑说明:
- 先用正则替换掉所有非有效字符,只留下数字、小数点和单位标识
- 检查字符串结尾是否为K/M,对应设置1000或1000000的倍数,同时截掉单位部分
- 将数字片段转为浮点数,乘以倍数后用
Math.round得到整数结果(如果需要保留小数,直接返回乘积即可)
这个函数兼容带$、不带$,整数、小数,有单位和无单位的所有场景,完全覆盖你的需求。
内容的提问来源于stack exchange,提问作者TheNoviceProgrammer
相关产品推荐
相关产品推荐

