亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用逗號格式化數字

用逗號格式化數字

largeQ 2023-09-28 15:21:27
我構建了一個使用逗號格式化數字的函數,類似于該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);我需要你注意的是,我使用了正則表達式來分割字符串,但是,我想知道是否有辦法只使用正則表達式來避免遞歸?即,有沒有辦法使用從字符串末尾開始并向左重復的正則表達式?
查看完整描述

1 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

使用單個正則表達式可以更簡單地完成此操作:


function transform(value) {

? return String(value).replace(/\B(?=(\d{3})+(?!\d))/g, ',');

}


// Works with string

console.log(transform("0123456789"));


// And numbers

console.log(transform(1234567890));

此正則表達式將在字符串中查找其后連續 3 位數字的任何點,并確保該點僅具有 3 位數字的整數倍。

查看完整回答
反對 回復 2023-09-28
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號