我构建了一个使用逗号格式化数字的函数,类似于该toLocaleString方法的作用。为了实现这一点,我使用了正则表达式和递归。然而,我有一种感觉,这件事本来可以做得更好。
我做了一些研究,但无法找到我正在寻找的答案。所以,我的问题是......有更好的方法吗?
function transform(value) {
const pureNumber = parseInt(value);
const numberParts = [];
function format(val) {
let formatted = val.toString().split(/(\d{3})$/).filter(i => !!i).join(",");
const splitted = formatted.split(",");
if(splitted.length > 1){
numberParts.unshift(splitted[1]);
return format(splitted[0]);
}
numberParts.unshift(splitted[0]);
return numberParts.join(",");
}
return format(pureNumber.toString());
}
const data = "1234567890";
const result = transform(data);
console.log(result);
我需要你注意的是,我使用了正则表达式来分割字符串,但是,我想知道是否有办法只使用正则表达式来避免递归?即,有没有办法使用从字符串末尾开始并向左重复的正则表达式?
猛跑小猪
相关分类