今天在處理乙個數字的格式顯示問題時,遇到下面的一些需求:
如下圖,如果勾選的話就使能該項設定。
百分比和小數字數比較好解決,百分比只需要在源數字後面加兩個零再加上百分號;小數只需要在小數點後面加零即可。最主要的是千分符的處理,好,就來說千分符。
數字千分符的處理有很多處理方案,最主要的有下面幾種。
思路:
將數字轉換成字串,然後倒序遍歷取值,每取3個字元插入乙個,
逗號,直到遍歷到第乙個字元。
**很簡單,如下:
function numberformat(num)
count++;
}return result;
}numberformat(12345678); // 12,345,678
思路:該正則的思路就是從數字的第乙個字元開始找,找到滿足該數字後面的數字個數為3的倍數的這個數字,然後在該數字替換成數字,
的形式,然後繼續往下找......
語法如下:
let regexp = /(\d)(?=(\d)+$)/g;
示例:
string(12345678).replace(/(\d)(?=(\d)+$)/g, "$1,");
解釋:首先\d
表示數字,然後以?=(\d)+
結尾的即滿足條件。所以最主要是這個?=(\d)+
表示式。
正向**?=n
,表示匹配任何其後緊接指定字串 n 的字串。 再結合\d
表示,如果乙個數字後面滿足字串n這個規則,那麼就將匹配到的這個數字(假如是1)替換成1,
。
所以現在的問題是字串n這個規則是什麼,是(\d)+
這個東西,這個表示數字的個數為3的倍數(倍數為1~n之間)。
所以整個表示式的意思就是:從第乙個數字開始看起,看這個數字後面的數字個數是不是3的倍數,是的話將這個數字(假如是1)替換成1,
的形式,然後繼續下乙個數字直到結尾。
說明:
根據 mdn 解釋,number.tolocalestring()
方法返回這個數字number
在特定語言環境下的表示字串。
簡單的使用:
var number = 3500;
console.log(number.tolocalestring()); // 3,500
我們直接呼叫該函式就可以得到問題的結果。但其實,該函式的功能不止於此,這就需要分析它的引數了。
語法:
numobj.tolocalestring([locales [, options]])
locales
一般可以填下面幾個數值:
options
options物件的屬性就有很多了,下面列舉乙個常用的屬性。
而這些屬性不僅可以滿足文章開頭提出的問題,也可以滿足我們日常常用到的數字的格式表示。那麼我們就來康康怎麼使用吧!
示例:
number(123).tolocalestring('zh-cn', ) // 00123.00
number(123).tolocalestring('zh-cn', ) // 12,300.00%
number(123).tolocalestring('zh-cn', ) // €123.00
最後,如果看完有收穫,就動動小手點個贊再走唄,筆芯。
今天在處理乙個數字的格式顯示問題時,遇到下面的一些需求:
如下圖,如果勾選的話就使能該項設定。
百分比和小數字數比較好解決,百分比只需要在源數字後面加兩個零再加上百分號;小數只需要在小數點後面加零即可。最主要的是千分符的處理,好,就來說千分符。
數字千分符的處理有很多處理方案,最主要的有下面幾種。
思路:
將數字轉換成字串,然後倒序遍歷取值,每取3個字元插入乙個,
逗號,直到遍歷到第乙個字元。
**很簡單,如下:
function numberformat(num)
count++;
}return result;
}numberformat(12345678); // 12,345,678
思路:該正則的思路就是從數字的第乙個字元開始找,找到滿足該數字後面的數字個數為3的倍數的這個數字,然後在該數字替換成數字,
的形式,然後繼續往下找......
語法如下:
let regexp = /(\d)(?=(\d)+$)/g;
示例:
string(12345678).replace(/(\d)(?=(\d)+$)/g, "$1,");
解釋:首先\d
表示數字,然後以?=(\d)+
結尾的即滿足條件。所以最主要是這個?=(\d)+
表示式。
正向**?=n
,表示匹配任何其後緊接指定字串 n 的字串。 再結合\d
表示,如果乙個數字後面滿足字串n這個規則,那麼就將匹配到的這個數字(假如是1)替換成1,
。
所以現在的問題是字串n這個規則是什麼,是(\d)+
這個東西,這個表示數字的個數為3的倍數(倍數為1~n之間)。
所以整個表示式的意思就是:從第乙個數字開始看起,看這個數字後面的數字個數是不是3的倍數,是的話將這個數字(假如是1)替換成1,
的形式,然後繼續下乙個數字直到結尾。
說明:
根據 mdn 解釋,number.tolocalestring()
方法返回這個數字number
在特定語言環境下的表示字串。
簡單的使用:
var number = 3500;
console.log(number.tolocalestring()); // 3,500
我們直接呼叫該函式就可以得到問題的結果。但其實,該函式的功能不止於此,這就需要分析它的引數了。
語法:
numobj.tolocalestring([locales [, options]])
locales
一般可以填下面幾個數值:
options
options物件的屬性就有很多了,下面列舉乙個常用的屬性。
而這些屬性不僅可以滿足文章開頭提出的問題,也可以滿足我們日常常用到的數字的格式表示。那麼我們就來康康怎麼使用吧!
示例:
number(123).tolocalestring('zh-cn', ) // 00123.00
number(123).tolocalestring('zh-cn', ) // 12,300.00%
number(123).tolocalestring('zh-cn', ) // €123.00
最後,如果看完有收穫,就動動小手點個贊再走唄,筆芯。 程式設計師不要總想著四兩撥千斤
2020 年是很魔幻的一年,但好在這特殊的一年中,經歷了一些事情,閱讀了一些書籍,終於明白了一些之前的困惑。因為覺得自己這些感悟可能具備一些普適性,所以作本文和大家一起分享。經常會有 拿 35 歲來製造年齡焦慮,但現實生活中,我也見過不少超過 35 歲的程式設計師。在中國幾十年前是沒有程式設計師,就...
程式設計師不要總想著四兩撥千斤
2020 年是很魔幻的一年,但好在這特殊的一年中,經歷了一些事情,閱讀了一些書籍,終於明白了一些之前的困惑。因為覺得自己這些感悟可能具備一些普適性,所以作本文和大家一起分享。經常會有 拿 35 歲來製造年齡焦慮,但現實生活中,我也見過不少超過 35 歲的程式設計師。在中國幾十年前是沒有程式設計師,就...
程式設計師不要總想著四兩撥千斤
大概程式設計師選擇入行時,都想著自己要從事的是乙份高科技工作,所以從意識上就有意無意賦予了自身一些特殊的象徵,但很多時候這種強加的意義讓自己焦慮不已。我經常在想,當李鴻章第一次面對美國的高樓大廈時,他心理是什麼樣的衝擊感。那些在清朝能建高樓大廈的人算不算高科技人才?那些能建立現代船舶 火車 汽車的人...