日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

5种方式将数字转成千分位

發布時間:2024/8/5 综合教程 46 生活家
生活随笔 收集整理的這篇文章主要介紹了 5种方式将数字转成千分位 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

曾經是一個經典面試題哦,大家看看自己會不會

1、利用正則的零寬度正預測先行斷言(?=exp),名字有點難記,意思是它斷言自身出現的位置的后面能匹配表達式exp,對此概念還不明白的可以戳這里,這里不做過多解釋。數字千分位的特點是,第一個逗號后面數字的個數是3的倍數,正則:/(d{3})+$/;第一個逗號前最多可以有1至3個數字,正則:/d{1,3}/。加起來就是/d{1,3}(d{3})+$/,分隔符要從前往后加,就要將前面的數字“87”替換成“87,”,為什么是87不是874?因為874后面只剩下5位數字,在632后加一個分隔符后,將只剩下97,不符合千分位要求,所以第一個分隔符后面的數字位數必須是3的倍數。要匹配數字87,又要保證87后面數字位數是3的倍數,并且要將匹配的87替換成“87,”,就要用到(?=exp),這里先定義一個變量var str = "87463297";

// 零寬斷言
console.info( str.replace(/d{1,3}(?=(d{3})+$)/g,function(s){
    return s+','
}) )


2、利用正則的子項來替換,跟第1種方法類似。
// 子項
console.info( str.replace(/(d{1,3})(?=(d{3})+$)/g,function($1){
    return $1=$1+','
}) )


3、先將字符串轉成數組,利用reverse反轉數組后每3個數字后添加一個分隔符“,”,到字符串末尾除外,之后轉回字符串。
// 利用字符串和數組方法
console.info( str.split("").reverse().join("").replace(/(d{3})+?/g,function(s){
    return s+",";
}).replace(/,$/,"").split("").reverse().join("") )


4、利用while循環拼接字符串每隔3個數字加一個分隔符,首尾不加
// 利用循環拼接字符串每隔3個加一個分隔符
var result="",
    index = 0,
    len = str.length-1;
while(len>=0) {
    index%3===0&&index!==0 ? result+=","+str[len] : result+=str[len];
    len--;
    index++;
};
result=result.split("").reverse().join("");
console.info(result);

5、利用while循環在數組里push分隔符,首尾不加

// 利用while循環在數組里push分隔符
var result="",
    index = 0,
    len = str.length,
    arr = str.split("");
 
while(len-index>0){
    len>=index&&len-index!==len && arr.splice(len-index,0,",");
    index+=3;
 
};
console.log(arr.join(""));

注:第1種方法是最簡潔的,性能也是最好的,推薦使用。


總結

以上是生活随笔為你收集整理的5种方式将数字转成千分位的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。