iOS开发之金额的千分位格式转换

来源:互联网 发布:淘宝手机自动发货 编辑:程序博客网 时间:2024/06/02 16:57

         在理财app开发的工程中,经常要与展示一些与金额有关的信息。产品为了美观, 经常要把金额数据用千分位的格式展示,例如:10000 千分位格式为:10,000.00。 然后我们从服务器拿到的数据都不是千分位格式的,这个时候我们要将这些金额字符串进行千分位格式化。

      首先我们不考虑有小数点的情况,即从右到左,每三位数前插入一个","(逗号)代码如下:

- (NSString *)stringFormatToThreeBit:(NSString *)string{    if (string.length <= 0) {        return @"".mutableCopy;    }        NSString *tempRemoveD = [string stringByReplacingOccurrencesOfString:@"," withString:@""];    NSMutableString *stringM = [NSMutableString stringWithString:tempRemoveD];    NSInteger n = 2;    for (NSInteger i = tempRemoveD.length - 3; i > 0; i--) {        n++;        if (n == 3) {            [stringM insertString:@"," atIndex:i];            n = 0;        }    }        return stringM;}
      然后我们来考虑有小数点的情况, 我们要根据小数点把字符串分成整数部分和小数部分, 在进行千分位格式话的时候小数部分不做处理, 将整数部分格式化后再拼接上小数点后的部分,即完成整个字符串的格式化,代码如下:

    - (NSString *)moneyFormat:(NSString *)money{    NSArray *moneys = [money componentsSeparatedByString:@"."];    if (moneys.count > 2) {        return money;    }    else if (moneys.count < 2) {        return [self stringFormatToThreeBit:money];    }    else {        NSString *frontMoney = [self stringFormatToThreeBit:moneys[0]];        if([frontMoney isEqualToString:@""]){            frontMoney = @"0";        }        return [NSString stringWithFormat:@"%@.%@", frontMoney,moneys[1]];    }}

0 0