【iOS開發系列】將阿拉伯數字轉換為中文數字
阿新 • • 發佈:2019-01-22
/** * 將阿拉伯數字轉換為中文數字 */ +(NSString *)translationArabicNum:(NSInteger)arabicNum { NSString *arabicNumStr = [NSString stringWithFormat:@"%ld",(long)arabicNum]; NSArray *arabicNumeralsArray = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0"]; NSArray *chineseNumeralsArray = @[@"一",@"二",@"三",@"四",@"五",@"六",@"七",@"八",@"九",@"零"]; NSArray *digits = @[@"個",@"十",@"百",@"千",@"萬",@"十",@"百",@"千",@"億",@"十",@"百",@"千",@"兆"]; NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:chineseNumeralsArray forKeys:arabicNumeralsArray]; if (arabicNum < 20 && arabicNum > 9) { if (arabicNum == 10) { return @"十"; }else{ NSString *subStr1 = [arabicNumStr substringWithRange:NSMakeRange(1, 1)]; NSString *a1 = [dictionary objectForKey:subStr1]; NSString *chinese1 = [NSString stringWithFormat:@"十%@",a1]; return chinese1; } }else{ NSMutableArray *sums = [NSMutableArray array]; for (int i = 0; i < arabicNumStr.length; i ++) { NSString *substr = [arabicNumStr substringWithRange:NSMakeRange(i, 1)]; NSString *a = [dictionary objectForKey:substr]; NSString *b = digits[arabicNumStr.length -i-1]; NSString *sum = [a stringByAppendingString:b]; if ([a isEqualToString:chineseNumeralsArray[9]]) { if([b isEqualToString:digits[4]] || [b isEqualToString:digits[8]]) { sum = b; if ([[sums lastObject] isEqualToString:chineseNumeralsArray[9]]) { [sums removeLastObject]; } }else { sum = chineseNumeralsArray[9]; } if ([[sums lastObject] isEqualToString:sum]) { continue; } } [sums addObject:sum]; } NSString *sumStr = [sums componentsJoinedByString:@""]; NSString *chinese = [sumStr substringToIndex:sumStr.length-1]; return chinese; } }