最近项目中需要前端对金额字符串进行处理,百度了未找到OC版本的。所以自己写了一个小算法,经过测试没出现啥问题。直接上代码。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100-(NSString *)toCapitalLetters:(NSString *)money { //首先转化成标准格式 “200.23” NSMutableString *tempStr=[[NSMutableString alloc] initWithString:[NSString stringWithFormat:@"%.2f",[money doubleValue]]]; //位 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{ 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]]; } } return endStr; }
(不要望了,一个方法,没有链接)
转载于:https://www.cnblogs.com/CF-STRONG/p/5940983.html
最后
以上就是舒心裙子最近收集整理的关于iOS数字字符串转大写金额字符串(OC)的全部内容,更多相关iOS数字字符串转大写金额字符串(OC)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复