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

        相信大家都用过NSDateFormatter来格式化时间,而对相似的 NSNumberFormatter的用法知之甚少,接下来就讲解一下其用法.

大家可能碰到过这样的问题,当我们统计数字时,数字比较大的时候,要用一定的格式将其展现的比较直观,比如手机号,几亿的总额,银行卡号等等...

1.我们可能会这样:

//正常号转银行卡号 增加4位间的空格

-(NSString *)normalNumToBankNum

{

    NSString *tmpStr = [self bankNumToNormalNum];

    int size = (tmpStr.length / 4);

    NSMutableArray *tmpStrArr = [[NSMutableArray alloc] init];

    for (int n = 0;n < size; n++)

    {

        [tmpStrArr addObject:[tmpStr substringWithRange:NSMakeRange(n*4, 4)]];

    }

    [tmpStrArr addObject:[tmpStr substringWithRange:NSMakeRange(size*4, (tmpStr.length % 4))]];

    tmpStr = [tmpStrArr componentsJoinedByString:@" "];

    return tmpStr;

}

//银行卡号转正常号 去除4位间的空格

-(NSString *)bankNumToNormalNum

{

    return [@"27398239020232431" stringByReplacingOccurrencesOfString:@" " withString:@""];

}

结果: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 {
    NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
    NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
    NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
    NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
    NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
    NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle
};

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:一亿二千三百四十五万六千七百八十九











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值