Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • S002-数字转化为逗号金钱格式★

S002-数字转化为逗号金钱格式★

将数字12345678转化成RMB形式:12,345,678

思路:将字符串切割成数组再反转,遍历数组,加入辅助数组,当数组长度为3的倍数,再向辅助数组加入 ","。


let str = '131243512361';
function num(str) {
  let arr = str.split('').reverse();
  let newArr = [];
  for(let i = 0;i < arr.length; i ++) {
    newArr.push(arr[i])
    if((i + 1) % 3 == 0) {
      newArr.push(',')
    }
  }
  if(arr.length % 3 == 0) {
    let con = newArr.reverse().join('')
    return con.slice(1,con.length)
  } else {
    return newArr.reverse().join('')
  }

}
console.log(num(str))


2 正则版

function formatNumber(str) {
  return str.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
}

console.log(formatNumber("1234567890")) // 1,234,567,890

下面简单分析下正则/\B(?=(\d{3})+(?!\d))/g:

/\B(?=(\d{3})+(?!\d))/g:正则匹配边界\B,边界后面必须跟着(\d{3})+(?!\d); (\d{3})+:必须是1个或多个的3个连续数字; (?!\d):第2步中的3个数字不允许后面跟着数字; (\d{3})+(?!\d):所以匹配的边界后面必须跟着3*n(n>=1)的数字。 最终把匹配到的所有边界换成,即可达成目标。

3 toLocaleString

(123456789).toLocaleString('en-US')  // 1,234,567,890

(123456789).toLocaleString()
Edit this page
最近更新: 2025/6/27 02:24
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人