1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > iOS数字金额转化为大写汉字(阿拉巴数字转化为汉字)

iOS数字金额转化为大写汉字(阿拉巴数字转化为汉字)

时间:2019-08-14 00:18:41

相关推荐

iOS数字金额转化为大写汉字(阿拉巴数字转化为汉字)

本博文想要解决的问题,是将一串阿拉伯数字(包含小数点)转化为对应的大写汉字。实现思路如下:1.将这串阿拉伯数字格式化,只取小数点后两位;2.将字符串分割为整数部分的子串和小数部分的子串;3.遍历整数部分并拼接大写汉字字符串;4.遍历小数部分并拼接大写汉字字符串(需处理只有小数的情况)。/*例如 100 转化为 一百元整*/+ (NSString *)convertAmount:(NSString *)amountString{if (!amountString || ([amountString doubleValue] == [@"0.00" doubleValue])){return @"零元整";}//首先转化成标准格式 “200.23”NSString *doubleStr = nil;doubleStr = [NSString stringWithFormat:@"%.2f",[amountString doubleValue]];NSMutableString *tempStr= nil;tempStr = [[NSMutableString alloc] initWithString:doubleStr];//位NSArray *carryArr1=@[@"元", @"拾", @"佰", @"仟", @"万", @"拾", @"佰", @"仟", @"亿", @"拾", @"佰", @"仟", @"兆", @"拾", @"佰", @"仟" ,@"京",@"十京",@"百京",@"千京垓",@"十垓",@"百垓",@"千垓秭",@"十秭",@"百秭",@"千秭穰",@"十穰",@"百穰",@"千穰"];NSArray *carryArr2=@[@"分",@"角"];//数字NSArray *numArr=@[@"零", @"壹", @"贰", @"叁", @"肆", @"伍", @"陆", @"柒", @"捌", @"玖"];NSArray *temarr = [tempStr componentsSeparatedByString:@"."];//小数点前的数值字符串NSString *firstStr=[NSString stringWithFormat:@"%@",temarr[0]];//小数点后的数值字符串NSString *secondStr=[NSString stringWithFormat:@"%@",temarr[1]];//是否拼接了“零”,做标记bool zero=NO;//拼接数据的可变字符串NSMutableString *endStr= [[NSMutableString alloc] init];/*** 首先遍历firstStr,从最高位往个位遍历 高位----->个位*/for(int i=(int)firstStr.length;i>0;i--){//取最高位数NSInteger MyData=[[firstStr substringWithRange:NSMakeRange(firstStr.length-i, 1)]integerValue];if ([numArr[MyData] isEqualToString:@"零"]){if ([carryArr1[i-1] isEqualToString:@"万"]||[carryArr1[i-1] isEqualToString:@"亿"]||[carryArr1[i-1] isEqualToString:@"元"]||[carryArr1[i-1] isEqualToString:@"兆"]){//去除有“零万”if (zero){endStr =[NSMutableString stringWithFormat:@"%@",[endStr substringToIndex:(endStr.length-1)]];[endStr appendString:carryArr1[i-1]];zero=NO;}else{[endStr appendString:carryArr1[i-1]];zero=NO;}//去除有“亿万”、"兆万"的情况if ([carryArr1[i-1] isEqualToString:@"万"]) {if ([[endStr substringWithRange:NSMakeRange(endStr.length-2, 1)] isEqualToString:@"亿"]) {endStr =[NSMutableString stringWithFormat:@"%@",[endStr substringToIndex:endStr.length-1]];}if ([[endStr substringWithRange:NSMakeRange(endStr.length-2, 1)] isEqualToString:@"兆"]) {endStr =[NSMutableString stringWithFormat:@"%@",[endStr substringToIndex:endStr.length-1]];}}//去除“兆亿”if ([carryArr1[i-1] isEqualToString:@"亿"]) {if ([[endStr substringWithRange:NSMakeRange(endStr.length-2, 1)] isEqualToString:@"兆"]) {endStr =[NSMutableString stringWithFormat:@"%@",[endStr substringToIndex:endStr.length-1]];}}}else{if (!zero) {[endStr appendString:numArr[MyData]];zero=YES;}}}else{//拼接数字[endStr appendString:numArr[MyData]];//拼接位[endStr appendString:carryArr1[i-1]];//不为“零”zero=NO;}}/*** 再遍历secondStr 角位----->分位*/if ([secondStr isEqualToString:@"00"]) {[endStr appendString:@"整"];}else{//如果最后一位位0就把它去掉if (secondStr.length > 1 && [secondStr hasSuffix:@"0"]){secondStr = [secondStr substringToIndex:(secondStr.length - 1)];}for(int i=(int)secondStr.length;i>0;i--){//取最高位数NSInteger MyData=[[secondStr substringWithRange:NSMakeRange(secondStr.length-i, 1)] integerValue];[endStr appendString:numArr[MyData]];[endStr appendString:carryArr2[i-1]];}}//add songif ([endStr hasPrefix:@"元"]){return (NSString *)[endStr substringFromIndex:1];}return endStr;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。