2013년 4월 13일 토요일

숫자를 통화로 변경

NSNumberFormatter를 이요하면, 숫자를 통화로 변경할 수 있습니다.

NSString *number = @"숫자";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *numberFromString = [NSNumber numberWithInt:[number intValue]];
NSString *balance = [formatter stringFromNumber:numberFromString];
[formatter release];

지역포멧이 대한민국인 경우 변환 결과:
232220    ==> ₩232,220
-10263522   ==>  -₩10,263,522

지역포멧이 미국인 경우 변환 결과:
232220   ==>  $232,220.00
-10263522  ==>  ($10,263,522.00)      *()표기는 음수를 나타냄.

만약 "xxxx원" 이런식으로 보여지기를 원한다면 약간의 추가 작업이 필요합니다.
아래 함수는 그 처리를 하는 함수 입니다:
+ (NSString *)convertFromNumberToCurrency:(NSString *)number
{
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    NSNumber *numberFromString = [NSNumber numberWithInt:[number intValue]];
    NSString *balance = [formatter stringFromNumber:numberFromString];
    [formatter release];
   
    balance = [balance stringByReplacingOccurrencesOfString:@"(" withString:@"-"];
    balance = [balance stringByReplacingOccurrencesOfString:@")" withString:@""];
   
    NSRange range = [balance rangeOfCharacterFromSet:[NSCharacterSet symbolCharacterSet]];
    while (range.location != NSNotFound) {
        balance = [balance stringByReplacingCharactersInRange:range withString:@""];
        range = [balance rangeOfCharacterFromSet:[NSCharacterSet symbolCharacterSet]];
    }
    balance = [balance stringByAppendingString:@"원"];
    return balance;
}

결과는 지역포멧에 상관없이 다음과 같음:
232220    ==> 232,220원
-10263522   ==>  -10,263,522원

댓글 없음:

댓글 쓰기