5種方式將數字轉成千分位

2022-01-20 05:18:41 字數 1647 閱讀 7531

by:王美建 from:

儘管離過年還有兩個月之久,春運搶票的戰鬥已經打響了,悲劇的是我還沒搶到票,看到某瀏覽器上的數字時,想到乙個經典面試題,沒錯,就是數字轉千分位。如將數字87463297轉成87,463,297,方法有很多種,我這裡只想到5種。

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

//

零寬斷言

console.info( str.replace(/\d(?=(\d)+$)/g,function

(s)) )

2、利用正則的子項來替換,跟第1種方法類似。

//

子項console.info( str.replace(/(\d)(?=(\d)+$)/g,function($1)) )

3、先將字串轉成陣列,利用reverse反轉陣列後每3個數字後新增乙個分隔符「,」,到字串末尾除外,之後轉回字串。

//

利用字串和陣列方法

console.info( str.split("").reverse().join("").replace(/(\d)+?/g,function

(s)).replace(/,$/,"").split("").reverse().join("") )

4、利用while迴圈拼接字串每隔3個數字加乙個分隔符,首尾不加

//

利用迴圈拼接字串每隔3個加乙個分隔符

var result="",

index = 0,

len = str.length-1;

while(len>=0) ;

result=result.split("").reverse().join("");

console.info(result);

5、利用while迴圈在陣列裡push分隔符,首尾不加

//

利用while迴圈在陣列裡push分隔符

var result="",

index = 0,

len =str.length,

i = len-1,

arr = str.split("");

while(len-index>0);

console.log(arr.join(""));

結語:第1種方法是最簡潔的,效能也是最好的,推薦使用。希望本文對園友有所幫助,附上所有例子的demo,如果還有其它更好更方便的方法請告訴我,謝謝!

by:王美建 from: 

js 將數字用千分位表示

在涉及到金額的情況下,一般來說,都需要用千分位的方式進行展示。更利於使用者閱讀。接下來介紹兩種常用的方案。tolocalestring 方法返回這個數字在特定語言環境下的表示字串。具體用法可檢視mdn介紹 結果 123 568.4758 function mytofixed data,n while...

數字增加千分位符

匹配input內只能輸入數字和 逗號或者說是千分位符 ps 使用千分位符時,一般只保留2位小數 如果沒有特殊說明可以用html中的 number屬性可以輸入 e e 是科學計算中的自然數 所以是可以輸入的 限制只能輸入數字 和 if this val length 1 else 數字裝千分位格式,千...

PHP 數字加千分位

number format float number int decimals 0 string number format float number int decimals 0 string dec point string thousands sep string number format ...