中文转拼音,分组与排序
来源:互联网 发布:淘宝店铺扣24分后果 编辑:程序博客网 时间:2024/06/05 07:56
这篇文章是后台接口直接把一堆数据不排序直接丢过来的情况下,这时候APP实现排序分组的方法。
待修改。。
参考:
http://www.cnblogs.com/syxchina/archive/2012/10/11/2720257.html
并使用其中的文件
ChineseString.h
ChineseString.m
pinyin.h
pinyin.c
实现
#import "ChineseString.h"#import "pinyin.h"#pragma mark - 中文转拼音排序/** * @param FriendsListArr GetFriendModel的数组 * * @return FriendGroup模型的数组 */-(NSMutableArray *)ChineseChangePinyin:(NSArray *)FriendsListArr{ NSMutableArray *FriendsList = [NSMutableArray arrayWithArray:FriendsListArr]; if(FriendsList.count == 0){ return [NSMutableArray array]; } NSLog(@"FriendsList :%@",FriendsList); NSMutableArray *nameArray = [[NSMutableArray array]init]; for(GetFriendModel *dict in FriendsList){ NSString *name = dict.FriendName; [nameArray addObject:name]; } //获取字符串中文字的拼音首字母并与字符串共同存放 NSMutableArray *chineseStringsArray=[NSMutableArray array]; for(int i=0 ; i<[nameArray count] ; i++){ ChineseString *chineseString=[[ChineseString alloc]init]; chineseString.string=[NSString stringWithString:[nameArray 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]; } //按照拼音首字母对这些Strings进行排序 NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"pinYin" ascending:YES]]; [chineseStringsArray sortUsingDescriptors:sortDescriptors]; //分类 NSMutableArray *groupArray = [NSMutableArray array]; int num = 0; while (1) { FriendGroup *Group = [[FriendGroup alloc]init]; NSMutableArray *Friend = [NSMutableArray array]; ChineseString *chineseString=[chineseStringsArray objectAtIndex:num]; NSString *pinyin = [chineseString.pinYin substringToIndex:1]; // NSLog(@"chineseString.pinYin %@ ",pinyin); for(int i = num; i<[chineseStringsArray count] ;i++ ) { ChineseString *nextName=[chineseStringsArray objectAtIndex:num]; //如果首字母相同,加入Group的Friend数组。否则跳出遍历 if([pinyin isEqualToString:[nextName.pinYin substringToIndex:1]]){ NSString *FriendName = nextName.string; for( GetFriendModel *friend in FriendsList){ if([friend.FriendName isEqualToString:FriendName]){ [Friend addObject:friend]; break; } } num++; }else{ break; } } Group.Group = [chineseString.pinYin substringToIndex:1]; Group.FriendArray = Friend; [groupArray addObject:Group]; if(num == chineseStringsArray.count){ break; } } NSLog(@"groupArray : %@",groupArray); return groupArray;}
0 0
- 中文转拼音,分组与排序
- 中文拼音排序
- 中文拼音排序
- 中文按拼音排序
- 中文拼音简单排序
- 中文拼音排序
- Android2.1联系人按照拼音分组排序
- Delphi中文与拼音
- 查询中文按照拼音排序
- 中文字符按拼音排序
- python中文按拼音排序
- java 中文首字母分组,排序
- 分组查询与排序
- 中文转拼音首字母
- SQL中文转拼音
- C#中文转拼音
- 中文转拼音
- java中文转拼音
- Openstack组件部署 — Nova_安装和配置Controller Node
- 设计模型之创建型模式之单例模式(Singleton)
- Linux学习之软件安装(二)-常用软件安装列表
- 剑指offer——删除链表中重复的结点
- [adb]常用命令
- 中文转拼音,分组与排序
- U3D自定义摇杆
- 自旋锁
- 集群、分布式、负载均衡区别与联系
- 第一次发博客O(∩_∩)O哈哈~!!
- Windows下多线程编程(二)
- JDK安装
- 在Android Studio中如何设置主题、字体大小
- Android 自动化测试学习笔记