NSString 没3位分割 ,

2022-09-19  本文已影响0人  林希品

方法

eg.数字以逗号隔开 例:123,321.11:

@interface NSString (NumberSplit)

/**
 *数字以逗号隔开 例:123,321.11
 */
- (NSString *)xp_numberSplitWithComma;
/**
 *@param puctutation 符合
 *数字以某个符合隔开 例:123,321.11
 */
- (NSString *)xp_numberSplitWithPunctutaion:(NSString *)puctutation;
/**
 *XX.XX万     XX.XX亿
 */
- (NSString *)subscribeCountUnit;
@end

@implementation NSString (NumberSplit)

- (NSString *)xp_numberSplitWithComma{
    if ([self private_isNumber]) {
        NSMutableString *muString = [NSMutableString stringWithString:self];
        return [self private_insert:muString withPunctuation:@","];
    }else{
        return self;
    }
}
- (NSString *)xp_numberSplitWithPunctutaion:(NSString *)puctutation{
    if ([self private_isNumber]) {
         NSMutableString *muString = [NSMutableString stringWithString:self];
         return [self private_insert:muString withPunctuation:puctutation];
     }else{
         return self;
     }
}
- (NSMutableString *)private_insert:(NSMutableString *)string withPunctuation:(NSString *)punctuation{
    NSUInteger maxLength = string.length;
    if ([string containsString:punctuation]) {
        maxLength = [string rangeOfString:punctuation].location;
    }else if ([string containsString:@"."]){
        maxLength = [string rangeOfString:@"."].location;
    }
    if (maxLength-([string containsString:@"-"]?1:0)>3) {
        [string insertString:punctuation atIndex:(maxLength-3)];
        [self private_insert:string withPunctuation:punctuation];
    }else{
        return string;
    }
    return string;
}
 - (Boolean)private_isNumber{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^[-0-9.]*$"];
    if ([predicate evaluateWithObject:self]) {
        return YES;
     }
    return NO;
 }

- (NSString *)subscribeCountUnit {
    NSInteger count = [self integerValue];
    if (count < 10000) {
        return [NSString stringWithFormat:@"%ld",count];
    }else if (count < 100000000 && count >= 10000) {
        NSInteger tenThouand = count/10000;
        NSInteger thousand = count%10000/1000;
//        return [NSString stringWithFormat:@"%ld.%ld万",tenThouand,thousand>=5?thousand+1:thousand];//进位
        return [NSString stringWithFormat:@"%ld.%ld万",tenThouand,thousand];
    } else{
        NSInteger yi = count/100000000;
        NSInteger tenThouand = count%100000000/10000000;
//        return [NSString stringWithFormat:@"%ld.%ld万",tenThouand,thousand>=5?thousand+1:thousand];//进位
        return [NSString stringWithFormat:@"%ld.%ld亿",yi,tenThouand];
    }
    return @"0";
}


上一篇 下一篇

猜你喜欢

热点阅读