用js写一个可以把任意字符串转换成标准金额格式的字符串
以下是一个可以将任意字符串转换为标准金额格式的 JavaScript 函数:
function formatMoney(str) {
// 将字符串转换为数字
let num = parseFloat(str);
// 判断是否为数字
if (isNaN(num)) {
return '请输入有效数字';
}
// 将数字转换为字符串,去掉小数点后多余的0
let strNum = num.toString().replace(/(\.\d*?)0+$/, "$1");
// 分离整数部分和小数部分
let [integer, decimal] = strNum.split('.');
// 将整数部分每3位加上逗号
integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
// 拼接整数部分和小数部分
if (decimal) {
return integer + '.' + decimal;
} else {
return integer;
}
}
该函数接受一个字符串作为输入,如果该字符串可以被解析为数字,将会返回标准金额格式的字符串,否则返回错误信息。具体实现过程如下:
-
使用
parseFloat()将字符串转换为数字,如果不能被解析为数字,将返回NaN。 -
判断是否为数字,如果不是数字,返回错误信息。
-
将数字转换为字符串,并使用正则表达式去掉小数点后多余的0。
-
分离整数部分和小数部分。
-
对整数部分每3位加上逗号,使用正则表达式
/\B(?=(\d{3})+(?!\d))/g匹配不在单词边界的位置,并使用正向预查保证至少有一组3个数字,最后使用replace()方法将逗号插入。 -
如果存在小数部分,将整数部分和小数部分拼接起来,使用小数点分隔;否则,只返回整数部分。
使用方式如下:
console.log(formatMoney('1234567.890')); // "1,234,567.89"
console.log(formatMoney('1234567')); // "1,234,567"
console.log(formatMoney('1.23')); // "1.23"
console.log(formatMoney('abc')); // "请输入有效数字"
希望能够帮助到你。
原文地址: http://www.cveoy.top/t/topic/burN 著作权归作者所有。请勿转载和采集!