按照拼音对数组中的中文字符串排序的算法
2015-05-14 15:48
543 查看
按照拼音对数组中的中文字符串排序的算法,不是很难,这里直接放上代码,Demo去最下面找:
注:里面用到一个叫George的牛人写的中文转拼音首字母的函数pinyinFirstLetter,因为内容实在是太多了就不贴上来了。
里面还用到一个叫ChineseString的类,里面只有两个NSString对象(string和pinYin)用于存放原字符串和字符串中每个字的拼音首字母
输出结果这里也贴上了:
Demo:
ChineseSort.zip (78
K) 下载次数:1268
注:里面用到一个叫George的牛人写的中文转拼音首字母的函数pinyinFirstLetter,因为内容实在是太多了就不贴上来了。
里面还用到一个叫ChineseString的类,里面只有两个NSString对象(string和pinYin)用于存放原字符串和字符串中每个字的拼音首字母
复制代码 //结果看输出 //Step1:初始化 NSMutableArray *stringsToSort=[NSArray arrayWithObjects: @"电脑", @"显示器", @"你好", @"推特", @"乔布斯", @"再见", @"暑假作业", @"键盘", @"鼠标", @"谷歌", @"苹果", nil]; //Step1输出 NSLog(@"尚未排序的NSString数组:"); for(int i=0;i<[stringsToSort count];i++){ NSLog(@"%@",[stringsToSort objectAtIndex:i]); } //Step2:获取字符串中文字的拼音首字母并与字符串共同存放 NSMutableArray *chineseStringsArray=[NSMutableArray array]; for(int i=0;i<[stringsToSort count];i++){ ChineseString *chineseString=[[ChineseString alloc]init]; chineseString.string=[NSString stringWithString:[stringsToSort objectAtIndex:i]]; if(chineseString.string==nil){ chineseString.string=@""; } if(![chineseString.string isEqualToString:@""]){ NSString *pinYinResult=[NSString string]; for(int j=0;j<chineseString.string.length;j++){ NSString *singlePinyinLetter=[[NSString stringWithFormat:@"%c",pinyinFirstLetter([chineseString.string characterAtIndex:j])]uppercaseString]; pinYinResult=[pinYinResult stringByAppendingString:singlePinyinLetter]; } chineseString.pinYin=pinYinResult; }else{ chineseString.pinYin=@""; } [chineseStringsArray addObject:chineseString]; } //Step2输出 NSLog(@"\n\n\n转换为拼音首字母后的NSString数组"); for(int i=0;i<[chineseStringsArray count];i++){ ChineseString *chineseString=[chineseStringsArray objectAtIndex:i]; NSLog(@"原String:%@----拼音首字母String:%@",chineseString.string,chineseString.pinYin); } //Step3:按照拼音首字母对这些Strings进行排序 NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"pinYin" ascending:YES]]; [chineseStringsArray sortUsingDescriptors:sortDescriptors]; //Step3输出 NSLog(@"\n\n\n按照拼音首字母后的NSString数组"); for(int i=0;i<[chineseStringsArray count];i++){ ChineseString *chineseString=[chineseStringsArray objectAtIndex:i]; NSLog(@"原String:%@----拼音首字母String:%@",chineseString.string,chineseString.pinYin); } // Step4:如果有需要,再把排序好的内容从ChineseString类中提取出来 NSMutableArray *result=[NSMutableArray array]; for(int i=0;i<[chineseStringsArray count];i++){ [result addObject:((ChineseString*)[chineseStringsArray objectAtIndex:i]).string]; } //Step4输出 NSLog(@"\n\n\n最终结果:"); for(int i=0;i<[result count];i++){ NSLog(@"%@",[result objectAtIndex:i]); } //程序结束 NSLog(@"\n\n\nDemo By Hxy060799"); |
Demo:
ChineseSort.zip (78
K) 下载次数:1268
相关文章推荐
- ios 按照拼音对数组中的中文字符串排序的算法
- 一月十日练习习题,1数组数据存入字典并输出2降序 和倒叙 输出数组中内容3对字符串当中信息进行查找是否存在4 把数组当中信息按照中文排序
- 数组按照拼音首字母排序后转为字符串
- PHP 字符串数组按照拼音排序的问题
- 【算法】实现对中文字符串数组按照音序排列
- Java字符串按照中文拼音排序
- java 中文字符串数组按照音序排列
- 华为:现有一串字符串,请对字符串中的数字字符按照升序排序,其他非数字字符存储位置保持不变,将结果保存至output数组中
- 给定一个字符串数组{"nba","abc","cba","zz","qq","haha"},请按照字典顺序进行从小到大的排序。
- java中文字符串按拼音排序代码
- ext改变行样式,中文按照拼音排序
- 在PHP中,将一个汉字数组按照拼音首字母进行排序
- 按照字典顺序对字符串数组进行从大到小的排序。
- js将数组中的字符串按照第二个字符的大小排序(sort排序)
- ios 汉字字符串数组拼音排序
- 实现对中文字符串数组按照音序排列
- javascript对中文按照拼音排序代码
- Hibernate 实现Oracle的中文汉字按照拼音排序
- 1754:字符串数组排序问题(4.1算法之排序和算法性能)
- 我们用sort asort 对数组排序时 中文如何按拼音排序的问题