首页 > 其他分享 >前端实现字符串插入千位分割符

前端实现字符串插入千位分割符

时间:2024-09-12 20:52:26浏览次数:3  
标签:千位 res number 插入 num let str 字符串 remainder

 前端开发时经常会遇到需要把一个很大的金额或是银行卡号进行千位分割展示,这里分享两个常用的方法:循环遍历字符长度添加和正则替换(此方法仅适用于正整数)

let num = 123456789000;
function thousandSplit(number) {
  let str = String(number) // 数字转换为字符串
  let remainder = str.length % 3 // 计算字符串除3的余数
  let res = '' // 保存插入千位符后的结果
  for(let i = remainder; i < str.length; i = i + 3){
    res = res + ',' + str.substr(i, 3)
  }
  // 余数为0,去掉第一个字符','  余数不为0,从下标0截取remainder个字符并拼接到res前面
  remainder === 0 ? res = res.substr(1) : res = str.substr(0, remainder) + res
  return res
}
console.log(thousandSplit(num)) // 123,456,789,000

// 正则表达式实现 (?=\d) 前瞻性匹配替换,只匹配位置,不消耗字符
function thousandSplit2(num) {
  return (num+"").replace(/\B(?=(\d{3})+$)/g, ",")
}
console.log(thousandSplit2(num)) // 123,456,789,000

如果要是带小数的千位分割

let num = 123456789000.01;
/*千分位转整数*/
function thousandsToNumber(str){
    str = typeof(str) == "string" ? str : str.toString();  // 将传入参数转为字符串以做修改
    return parseFloat(str.split(",").join(""));
}
/*整数 小数 封装千分位符*/
function numberToThousands(number, n) {	
    number = thousandsToNumber(number.toString());    // 转为字符串
    n = /^[1-9]\d*$/.test(n) ? n : 0;        //保留位数,传入的空或非正整数都保留0位
    var num = (Math.round(number * (Math.pow(10, n))) / (Math.pow(10, n))).toString();          //保留小数位数
    var rs = num.indexOf('.');          //分离成小数部分和整数部分
    /*对不足位数的补零*/
    if (rs < 0) {
        rs = num.length;
        num += '.';
    }
    while (num.length <= rs + n) {
        num += '0';
    }
    var integer = num.split(".")[0];
    var decimal = num.split(".")[1];
    /*保留小数 不保留小数*/
    return integer.toString().replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, '$1,') + (n && "." + decimal);
}
console.log(numberToThousands(num, 2)) // 123,456,789,000.01

标签:千位,res,number,插入,num,let,str,字符串,remainder
From: https://blog.csdn.net/m0_56344834/article/details/142184833

相关文章

  • 算法与数据结构——二分查找插入点
    二分查找插入点二分查找不仅可用于搜索目标元素,还可以解决许多变种问题,比如搜索目标元素的插入位置。无重复元素情况Question给定一个长度为n的有序数组nums和一个元素target,数组不存在重复元素。现将target插入数组nums中,并保持其有序性。若数组中已存在元素target,则插入到......
  • 使用go来做加密解密文件或者字符串
    你可以使用Linux命令行中的openssl或gpg进行加密,然后在Go程序中使用相关的库来解密。方案1:使用OpenSSL进行加密,Go程序解密1.命令行加密使用openssl在命令行中对token进行加密,并保存加密结果:echo-n"your_token"|opensslenc-aes-256-cbc-a-salt-pas......
  • 使用java程序对字符串进行加密
    程序功能程序的功能是对用户输入的字符串,使用常见的三种加密算法(MD5、SHA-1和SHA-256)进行加密,并输出每种算法加密后的结果。主要步骤包括:用户通过控制台输入一个字符串。程序使用MessageDigest类,对输入的字符串分别进行MD5、SHA-1和SHA-256算法的加密处理。每......
  • PPT中的图形与图片:插入、调整与格式设置技术详解
    目录引言一、图形与图片的插入1.插入图形2.插入图片二、图形与图片的调整1.调整大小与位置2.裁剪与旋转3.图形与图片的合并与组合三、图片格式与布局设置1.图片格式设置2.图片布局设置示例案例:制作产品展示PPT四、结论引言在现代商务、教育和学术交流......
  • 关于一些字符串操作的常用方法
    字符串操作关于一些字符串操作常用方法字符串截取stringtemp="大家好,我叫张三。";//索引从0开始截取索引5后面的所有字符串(包括5)Console.WriteLine(temp.Substring(5));//索引从0开始,截取索引5后面4个字符串(包括5)......
  • MySQL原理之UUID主键分析,插入或更新语法分析
    目录1MySQL不能用UUID做主键1.1前言1.2mysql和程序实例1.2.1准备工作1.2.2开始测试1.2.3程序写入结果1.2.4效率测试结果1.3使用uuid和自增id的索引结构对比1.3.1自增id1.3.2uuid1.4自增id缺点1.5雪花算法2插入或更新2.1onduplicatekey2.1.1定义2.1.2values函数2......
  • C++中的数组,字符串数组,pair数组
    1.C++中的字符串数组: 2.C++中的常量数组 这个constpair<int,string>valueSymbols[]定义了一个常量数组,数组中的每个元素都是一个pair<int,string>类型的对象。pair是C++标准模板库(STL)中的一个模板类,用于将两个值组合成一个单一的对象。在这个特定的例子中,pair的第一个......
  • 使用Java实现字符串中的表达式计算
    /***计算字符串表达式的值,不支持小数*<ul>*<li>加法('+')</li>*<li>减法('-')</li>*<li>乘法('*')</li>*<li>除法,保留两位小数('/')</li>*<li>取余,获取商('......
  • 元组和字符串
    元组(增删查)元组在包含内容上相当于不可变的列表不可对元组内的序列修改,不可以通过索引下标的方式进行修改可进行的操作有:定义,ryhme=()通过下表索引ryhme[0]=(第一位),ryhme[-1]=(最后一位),ryhme[:3]=前3位切片,ryhme[:]=全部,ryhme[::2]=间隔2索引全部内容,ryhme[::-1]=倒序......
  • Java语言程序设计基础篇_编程练习题*18.10 (字符串中某个指定字符出现的次数)
    目录题目:*18.10(字符串中某个指定字符出现的次数)习题思路代码示例 输出结果题目:*18.10(字符串中某个指定字符出现的次数)  编写一个递归方法,使用下面的方法头给出一个指定字符在字符串中出现的次数。publicstaticintcount(Stringstr,chara) 例如,coun......