NSArray利用Cocoa框架进行汉字排序
NSArray利用Cocoa框架进行汉字排序
在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比較,返回一个本地化的比較结果。也就是说这个函数是支持汉字比較的。
@interface Student : NSObject
@property(nonatomic,copy)NSString *stuName;
@property(nonatomic,assign)CGFloat stuScore;
@property(nonatomic,copy)NSString *stuSex;
@property(nonatomic,assign)NSInteger stuAge;
-(id)initWithName:(NSString *)stuName
andStuScore:(CGFloat) stuScore
andStuSex:(NSString *) stuSex
andStuAge:(NSInteger) stuAge;
+(id)StudentWithName:(NSString *)stuName
andStuScore:(CGFloat) stuScore
andStuSex:(NSString *) stuSex
andStuAge:(NSInteger) stuAge;
@end
Student.m
@implementation Student
-(id)initWithName:(NSString *)stuName
andStuScore:(CGFloat) stuScore
andStuSex:(NSString *) stuSex
andStuAge:(NSInteger) stuAge{
self = [super init];
if (self) {
_stuName = stuName;
_stuScore = stuScore;
_stuSex = stuSex;
_stuAge = stuAge;
}
return self;
}
+(id)StudentWithName:(NSString *)stuName
andStuScore:(CGFloat) stuScore
andStuSex:(NSString *) stuSex
andStuAge:(NSInteger) stuAge{
Student *stu = [[Student alloc] initWithName:stuName andStuScore:stuScore andStuSex:stuSex andStuAge:stuAge];
return stu;
}
@end
main.m
Student *stu1 = [[Student alloc] initWithName:@"电脑" andStuScore:34.5 andStuSex:@"男" andStuAge:20];
Student *stu2 = [[Student alloc] initWithName:@"鼠标" andStuScore:34.7 andStuSex:@"男" andStuAge:21];
Student *stu3 = [[Student alloc] initWithName:@"键盘" andStuScore:45.6 andStuSex:@"nan" andStuAge:22];
Student *stu4 = [[Student alloc] initWithName:@"显示器" andStuScore:34.6 andStuSex:@"男" andStuAge:23];
NSArray *stuArray1 = [[NSArray alloc]initWithObjects:stu1,stu2,stu3,stu4,nil];
NSArray *newArry = [stuArray1 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
Student *stu1,*stu2;
stu1 = (Student *)obj1;
stu2 = (Student *)obj2;
return [stu1.stuName localizedCompare:stu2.stuName];
}];
NSLog(@"未排序前:");
for (Student *stu in stuArray1) {
NSLog(@"name = %@,score = %g,sex = %@,age = %ld",stu.stuName,stu.stuScore,stu.stuSex,stu.stuAge);
}
NSLog(@"排序后");
for (Student *stu in newArry) {
NSLog(@"name = %@,score = %g,sex = %@,age = %ld",stu.stuName,stu.stuScore,stu.stuSex,stu.stuAge);
}
return 0;
这样做会有几方面的优点:1 支持多个汉字按字母序排序(若第一个字的第一个字母同样。则按第一个字的第二个字母比較,若第一个字的字母全然同样,按第二个字的首字母继续排序)。 2原本可能须要保存汉字拼音的地方。如今不须要了。
3 能够通过对nickNameSortde进一步定制。完毕更复杂的比較,比方先比較会员状态,在按姓名字母序完毕比較。4总体结构简单 使用的都是CocaTouch框架下的的方法。
转载于:https://www.cnblogs.com/mthoutai/p/7301248.html
NSArray利用Cocoa框架进行汉字排序相关推荐
- NSArray进行汉字排序
因为NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完成按A~Z的排序,这看起来是个头疼的问题,因为牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将 ...
- 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!
利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow + qrcode 模块 核心代码import qrcodeqr = q ...
- 【iOS开发】从Cocoa框架说开去--Fundation框架系列
[Cocoa简介] Cocoa是苹果公司为Mac OS X所创建的原生面向对象API 是Mac OS X上五大API之一.(其他四个:Carbon POSIX X11 Java)它是苹果的面向对象开发 ...
- 苹果官方指南:Cocoa框架(1)
是什么因素使一个程序成为Cocoa程序呢?肯定不是编程语言,因为在Cocoa开发中您可以使用各种语言;也不是开发工具,因为您在命令行上就可以创建Cocoa程序(虽然那会使开发过程变得复杂,且需要消耗大 ...
- Java汉字排序(3)按笔划排序
对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按笔划排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...
- 在Docker容器上利用Scrapy-Redis框架的分布式爬虫
目录 一.概况 二.系统设计 1.分布式爬虫框架 2.分布式爬虫流程 三.系统实现与测试 1.系统开发环境 2.Docker集群部署 3.爬虫实现与测试 总结 一.概况 这段时间在本科毕设和考研复试, ...
- Java数组中文排序_Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)
这里举例List集合 , 对list中的中文进行排序 , 按照中文拼音首字母. 支持生僻汉字的话 , 需要使用一个jar包 , 链接地址如下 传统的 : List list = new ArrayLi ...
- Cocoa 框架 For iOS(一) 框架的介绍,Objectivie-C运行时能力的解析等 (转载)
http://blog.csdn.net/totogo2010/article/details/8081253 Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. ...
- UI设计实战篇——利用Bootstrap框架制作查询页面的界面
Bootstrap框架是一个前端UI设计的框架,它提供了统一的UI界面,简化了设计界面UI的过程(缺点是定制了界面,调整的余地不是太大).尤其是现在的响应时布局(我的理解是页面根据不同的分辨率,采用不 ...
最新文章
- c语言中的tanh函数,tanh()函数,用于C ++中的复数
- WCF duplex service + silverlight 聊天代码
- 关于U盘安装ubuntu-18.04安装时候出现的grub-efi-amd64-signed的问题。
- 室外建筑表现3Dmax和vray常用材质参数设置
- python if elif else_python:通讯录(字典+while+if/else)
- 一名创业者浴火涅磐的自白——对话阿里云MVP孙琦
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
- datatable 转list
- typeorm mysql2_指南 - 使用 TypeORM 和 Express 的示例 - 《TypeORM v0.2.20 中文文档》 - 书栈网 · BookStack...
- Dockerfile怎么创建镜像
- Bailian2675 计算书费【求和】
- java split 坑
- VS 中PageLayout 属性设置
- Nginx面试题(总结最全面的面试题!!!)
- 【使用Idea打包war包】
- MPEG4视频压缩编码技术详解
- 【Chrome】678- Chrome插件开发全攻略
- iPhone手机蓝牙找不到AirPods耳机的解决方法
- 女儿7岁就要做牙齿矫正,这些年我都做错了什么?
- 写了一篇文章老是提示包含敏感词,修改了好多遍