數字格式化以及指定分隔符

2021-07-03 13:21:03 字數 1862 閱讀 4642

相信大家都用過nsdateformatter來格式化時間,而對相似的 nsnumberformatter的用法知之甚少,接下來就講解一下其用法.

大家可能碰到過這樣的問題,當我們統計數字時,數字比較大的時候,要用一定的格式將其展現的比較直觀,比如手機號,幾億的總額,銀行卡號等等...

1.我們可能會這樣:

//正常號轉銀行卡號-增加4位間的空格

-(nsstring *)normalnumtobanknum

[tmpstrarr addobject:[tmpstr substringwithrange:nsmakerange(size*4, (tmpstr.length % 4))]];

tmpstr = [tmpstrarr componentsjoinedbystring:@" "];

return tmpstr; }

//銀行卡號轉正常號-去除4位間的空格

-(nsstring *)banknumtonormalnum

結果:2739 8239 0202 3243 1

2.當然這並不是太難,但是你想不想這樣來實現呢:

nsnumber *number = [nsnumber numberwithlonglong:27398239020232431];

nsnumberformatter *formatter1 = [nsnumberformatter new];

[formatter1 setusesgroupingseparator:yes];

[formatter1 setgroupingsize:4];

[formatter1 setgroupingseparator:@"-"];

nsstring *res = [formatter1 stringfromnumber:number];

結果:2-7398-2390-2023-2432

3. 很明顯第二種方法可用性非常高,比較靈活,

當然nsnumberformatter還有很多其他型別,比如

nsnumberformatter *formatter = [[nsnumberformatter alloc] init];

formatter.numberstyle = nsnumberformatterdecimalstyle;

nsstring *string = [formatter stringfromnumber:[nsnumber numberwithint:27398239020232431]];

nslog(@"number string:%@",string);

輸出結果為: number string:27,398,239,020,232,431

其中nsnumberformatter類有個屬性numberstyle,它是乙個列舉型,設定不同的值可以輸出不同的數字格式。該列舉包括:

enum ;

typedef nsuinteger nsnumberformatterstyle;

各個列舉對應輸出數字格式的效果如下:

[1243:403] formatted number string:123456789

[1243:403] formatted number string:123,456,789

[1243:403] formatted number string:¥123,456,789.00

[1243:403] formatted number string:-539,222,988%

[1243:403] formatted number string:1.23456789e8

[1243:403] formatted number string:一億二千三百四十五萬六千七百八十九

指定分隔符,輸出指定的段(2016)

根據指定的分隔符分隔字串,並輸出指定的段。如果指定的段超過分隔的段數,輸出 null 舉例 aaa?bbb?ccc?2 字串為 aaa?bbb?ccc?分隔符為 指定的段為 2 字串分割為 aaa bbb ccc共三段,第2段字串為 bbb 輸入分隔字串長度小於128個字元,指定的段是乙個正整數。輸...

hive建立table時指定分隔符

由於很多資料在hadoop平台,當從hadoop平台的資料遷移到hive目錄下時,由於hive預設的分隔符是 u0001,為了平滑遷移,需要在建立 時指定資料的分割符號,語法如下 create table test uid string,name string row format delimite...

格式化數字

格式化數字 下表是可在format函式中用於格式化數字的字元。字元 說明0 數字佔位符。顯示乙個數字或0。如果表示式在格式字串中出現0的位置上有數字,則顯示該數字 否則在該位置顯示0。如果數字的位數少於格式表示式中 0 的個數 小數點任一側 則顯示前導零或尾隨零。如果數字的小數點分隔符右側的位數多於...