NSArray利用Cocoa框架进行汉字排序

NSArray利用Cocoa框架进行汉字排序

在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比較,返回一个本地化的比較结果。也就是说这个函数是支持汉字比較的。

Student.h

@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框架下的的方法。

posted on 2017-08-07 20:42 mthoutai 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mthoutai/p/7301248.html

NSArray利用Cocoa框架进行汉字排序相关推荐

  1. NSArray进行汉字排序

    因为NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完成按A~Z的排序,这看起来是个头疼的问题,因为牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将 ...

  2. 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!

    利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow  + qrcode 模块 核心代码import qrcodeqr = q ...

  3. 【iOS开发】从Cocoa框架说开去--Fundation框架系列

    [Cocoa简介] Cocoa是苹果公司为Mac OS X所创建的原生面向对象API 是Mac OS X上五大API之一.(其他四个:Carbon POSIX X11 Java)它是苹果的面向对象开发 ...

  4. 苹果官方指南:Cocoa框架(1)

    是什么因素使一个程序成为Cocoa程序呢?肯定不是编程语言,因为在Cocoa开发中您可以使用各种语言;也不是开发工具,因为您在命令行上就可以创建Cocoa程序(虽然那会使开发过程变得复杂,且需要消耗大 ...

  5. Java汉字排序(3)按笔划排序

    对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按笔划排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...

  6. 在Docker容器上利用Scrapy-Redis框架的分布式爬虫

    目录 一.概况 二.系统设计 1.分布式爬虫框架 2.分布式爬虫流程 三.系统实现与测试 1.系统开发环境 2.Docker集群部署 3.爬虫实现与测试 总结 一.概况 这段时间在本科毕设和考研复试, ...

  7. Java数组中文排序_Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)

    这里举例List集合 , 对list中的中文进行排序 , 按照中文拼音首字母. 支持生僻汉字的话 , 需要使用一个jar包 , 链接地址如下 传统的 : List list = new ArrayLi ...

  8. Cocoa 框架 For iOS(一) 框架的介绍,Objectivie-C运行时能力的解析等 (转载)

    http://blog.csdn.net/totogo2010/article/details/8081253 Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. ...

  9. UI设计实战篇——利用Bootstrap框架制作查询页面的界面

    Bootstrap框架是一个前端UI设计的框架,它提供了统一的UI界面,简化了设计界面UI的过程(缺点是定制了界面,调整的余地不是太大).尤其是现在的响应时布局(我的理解是页面根据不同的分辨率,采用不 ...

最新文章

  1. c语言中的tanh函数,tanh()函数,用于C ++中的复数
  2. WCF duplex service + silverlight 聊天代码
  3. 关于U盘安装ubuntu-18.04安装时候出现的grub-efi-amd64-signed的问题。
  4. 室外建筑表现3Dmax和vray常用材质参数设置
  5. python if elif else_python:通讯录(字典+while+if/else)
  6. 一名创业者浴火涅磐的自白——对话阿里云MVP孙琦
  7. Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
  8. datatable 转list
  9. typeorm mysql2_指南 - 使用 TypeORM 和 Express 的示例 - 《TypeORM v0.2.20 中文文档》 - 书栈网 · BookStack...
  10. Dockerfile怎么创建镜像
  11. Bailian2675 计算书费【求和】
  12. java split 坑
  13. VS 中PageLayout 属性设置
  14. Nginx面试题(总结最全面的面试题!!!)
  15. 【使用Idea打包war包】
  16. MPEG4视频压缩编码技术详解
  17. 【Chrome】678- Chrome插件开发全攻略
  18. iPhone手机蓝牙找不到AirPods耳机的解决方法
  19. 女儿7岁就要做牙齿矫正,这些年我都做错了什么?
  20. 写了一篇文章老是提示包含敏感词,修改了好多遍

热门文章

  1. 桩身弹性压缩计算公式_基于非线性应力应变关系的桩身压缩量计算
  2. php接受go返回数据,Golang: 接收GET和POST参数(示例代码)
  3. mastercam2019中文版
  4. 从尾到头打印单向链表
  5. python — 列表与元组
  6. 华为+京东数科(原京东金融)面经--Java后台开发
  7. MySQL 数据库慢查询日志分析脚本
  8. Java类文件结构详解
  9. JavaScriptjQuery 基本使用
  10. bzoj 5340: [Ctsc2018]假面