实现数字千分位分隔

简介: 实现数字千分位分隔

方法一:Number.prototype.toLocaleString()


返回这个数字在特定语言环境下的表示字符串。


该方法的详细介绍请看mdn developer.mozilla.org/zh-CN/docs/…


let num = 123456789;
num.toLocaleString()// "123,456,789"


该方法的很方便,但是兼容性不是很好


网络异常,图片无法展示
|


方法二: 通过正则匹配


let num = '12345678'
    let reg = /(?=\B(\d{3})+$)/g
    console.log(num.replace(reg,",")) //12,345,678


方法三: 自定义方法分隔


实现思路:


  • 将用户传入的数字转为字符串。


  • 使用字符串的split方法将其分隔成数组,然后在使用reverse方法进行反转数组。


  • 通过用户传入的分割位数来确定需要将数值分为几组。


  • 定义一个新数组用来存放添加分隔符的数组。


  • 通过分组数来循环确定分隔符的位置。


  • 传入的分割位数刚好将数组分组,可能分割符出现在第一位,这时我们需要删除该分隔符,然后反转该添加完分隔符的数组,最后通过join方法转为字符串。


function fn(num, sep, size) {
      num += "";
      let numArr = num.split("").reverse();
      let group = parseInt(numArr.length / size);
      let resArr = []
      // 设置一个变量来控制数组分割的起始和终止
      let i = 0;
      while (group) {
        // 确定分隔符的位置
        resArr = [...resArr, ...numArr.slice(size * i, size * (i + 1)), sep]
        group--;
        i++;
      }
      // 表示参与分割的数组元素个数
      const restIndex = resArr.length - parseInt(numArr.length / size);
      // 将没参与分组的元素添加到已经添加分隔符的数组中
      resArr = [...resArr, ...numArr.slice(restIndex)]
      // 将分隔好的数组反转,并转为字符串。
      let strNum = resArr.reverse().join('')
      if (strNum[0] === sep) {
        strNum = strNum.slice(1)
      }
      return strNum;
    }
    console.log(fn(12345678, ',', 3)) //12,345,678


相关文章
|
7月前
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
96 1
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
|
4月前
|
人工智能
将两个数字用字符串输入,因为b它字符都一样,
将两个数字用字符串输入,因为b它字符都一样,
|
6月前
统计出其中英文字母、空格、数字和其它字符的个数
【6月更文挑战第8天】统计出其中英文字母、空格、数字和其它字符的个数。
48 9
|
7月前
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。 提示:利用ord()函数来获得字符的 ASCIl。
177 1
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
数字实现千分位分隔符
数字实现千分位分隔符
69 0
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
281 0
7-8 字符串字母大小写转换 (15 分)
7-8 字符串字母大小写转换 (15 分)
314 0
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。