ios 按照拼音对数组中的中文字符串排序的算法
来源:互联网 发布:知乎 神回复 编辑:程序博客网 时间:2024/05/16 13:59
- //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");
阅读全文
0 0
- 按照拼音对数组中的中文字符串排序的算法
- ios 按照拼音对数组中的中文字符串排序的算法
- Java对List中的中文属性按照拼音排序
- Java字符串按照中文拼音排序
- 对汉字字符串按照拼音排序
- 【算法】实现对中文字符串数组按照音序排列
- Android 对汉字字符串按照拼音排序 Java
- Android 对汉字字符串按照拼音排序 Java
- Android 对汉字字符串按照拼音排序 Java
- 查询中文按照拼音排序
- 汉字字符串按照拼音排序
- 中文按照拼音排序的函数 strcoll wcscroll 及 _tcscoll
- Hibernate 实现Oracle的中文汉字按照拼音排序
- iOS 数组中的string 按照字典排序
- 我们用sort asort 对数组排序时 中文如何按拼音排序的问题
- java中按照中文拼音排序
- 实现对中文字符串数组按照音序排列
- C#对字符串进行排序 支持中文 笔画和拼音
- socket(2)
- VS实用的快捷键
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- AngularJS之API ——function
- 整数中二进制1的个数
- ios 按照拼音对数组中的中文字符串排序的算法
- Winsock 2 I/O Methods 5 Part 11
- 智能化运维
- 【C++】【LeetCode】39. Combination Sum&40. Combination Sum II
- 数据挖掘:概念与技术(第三版)之第一章的学习记录
- hdu 2647 Reward 逆拓扑排序+队列
- JAVA Reference-深入
- icheck 动态设置选中,判断是否选择
- C++ pair函数和sort函数学习