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";
//2、利用正則的子項來替換,跟第1種方法類似。零寬斷言
console.info( str.replace(/\d(?=(\d)+$)/g,function
(s)) )
//3、先將字串轉成陣列,利用reverse反轉陣列後每3個數字後新增乙個分隔符「,」,到字串末尾除外,之後轉回字串。子項console.info( str.replace(/(\d)(?=(\d)+$)/g,function($1)) )
//4、利用while迴圈拼接字串每隔3個數字加乙個分隔符,首尾不加利用字串和陣列方法
console.info( str.split("").reverse().join("").replace(/(\d)+?/g,function
(s)).replace(/,$/,"").split("").reverse().join("") )
//5、利用while迴圈在陣列裡push分隔符,首尾不加利用迴圈拼接字串每隔3個加乙個分隔符
var result="",
index = 0,
len = str.length-1;
while(len>=0) ;
result=result.split("").reverse().join("");
console.info(result);
//結語:第1種方法是最簡潔的,效能也是最好的,推薦使用。希望本文對園友有所幫助,附上所有例子的demo,如果還有其它更好更方便的方法請告訴我,謝謝!利用while迴圈在陣列裡push分隔符
var result="",
index = 0,
len =str.length,
i = len-1,
arr = str.split("");
while(len-index>0);
console.log(arr.join(""));
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 ...