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

         在理财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]];
    }
}

你可能感兴趣的:(iOS开发之金额的千分位格式转换)