我们在工程的时候,有时候会遇到这种需求,就是我们需要一定长度的数字,如果不足这个长度,前面补0或者其他数字,亦或者在后面填充其他字符,这时候我们就能用到NSNumberFormatter,接下来让我们看看代码怎么实现吧
let formatter1 = NSNumberFormatter()
var number = NSNumber(integer:16)
formatter1.formatWidth =5 //设置长度,如果不足这个长度,补零,如果超过的话,原样显示
formatter1.paddingCharacter ="0"//需要补充的字符
formatter1.paddingPosition =NSNumberFormatterPadPosition.BeforePrefix//是个枚举值,确定在哪个位置补充支付,前面还是后面
var str1 = formatter1.stringFromNumber(number)//现在str1的值是00016
为了实现这样一个代码,写了这么多代码,你可能感觉NSNumberFormatter也不过如此嘛,接下来让我们再看看他的一些其他的功能吧NSNumberFormatter有这样一个属性numberStyle,可以重视他的格式
let formatter =NSNumberFormatter()
var number = NSNumber(integer:18238825318)
formatter.locale = NSLocale(localeIdentifier: "zh-Hans")
formatter.numberStyle =NSNumberFormatterStyle.NoStyle//原样输出
formatter.numberStyle =NSNumberFormatterStyle.DecimalStyle//字符分割输出
str = formatter.stringFromNumber(number)//此时str的值是18,238,825,318
formatter.numberStyle =NSNumberFormatterStyle.CurrencyStyle//前面添加货币后输出
str = formatter.stringFromNumber(number)//¥18,238,825,318.00
formatter.numberStyle =NSNumberFormatterStyle.PercentStyle//乘100后后面加%后输出
str = formatter.stringFromNumber(number) //1,823,882,531,800%
formatter.numberStyle =NSNumberFormatterStyle.ScientificStyle//以科学技术法的形式输出
str = formatter.stringFromNumber(number)//1.8238825318E10
formatter.numberStyle =NSNumberFormatterStyle.SpellOutStyle//以文字的形式输出,我个人感觉这个还是比较有用的
str = formatter.stringFromNumber(number) //一百八十二亿三千八百八十二万五千三百一十八
到这我们可能会感觉NSNumberFormatter有点用了,我认为实用的功能还有一个,有时我们会有这种需求,当有一个数字比较长的时候,我们想用分隔符分割一个,这样看着比较舒服,例如1000000000我们想以这样显示1_000_000_000,我个人认为用NSNumberFormatter会比较方便。下面让我们来看代码吧
let formatter1 = NSNumberFormatter()
var number1 = NSNumber(integer:1000000000)
formatter1.usesGroupingSeparator = true//是否用分割符
formatter1.groupingSeparator = "_"//分割符是什么
formatter1.groupingSize = 3//使用分隔符的唱的呀
var str1 = formatter1.stringFromNumber(number1)//此时str11_000_000_000