NSArray *originalArray = @[@"1",@"21",@"12",@"11",@"0"];

//block比较方法,数组中可以是NSInteger,NSString(需要转换)

NSComparator finderSort = ^(id string1,id string2){

if ([string1 integerValue] > [string2 integerValue]) {

return (NSComparisonResult)NSOrderedDescending;

}else if ([string1 integerValue] < [string2 integerValue]){

return (NSComparisonResult)NSOrderedAscending;

}

else

return (NSComparisonResult)NSOrderedSame;

};

//数组排序:

NSArray *resultArray = [originalArray sortedArrayUsingComparator:finderSort];

NSLog(@"第一种排序结果:%@",resultArray);

如果NSArray里面的不是数字,不能转换成NSInteger,就要用字符串的比较方法了

NSArray *charArray = @[@"string 1",@"String 21",@"string 12",@"String 11",@"String 02"];

NSStringCompareOptions comparisonOptions = NSCaseInsensitiveSearch|NSNumericSearch|

NSWidthInsensitiveSearch|NSForcedOrderingSearch;

NSComparator sort = ^(NSString *obj1,NSString *obj2){

NSRange range = NSMakeRange(0,obj1.length);

return [obj1 compare:obj2 options:comparisonOptions range:range];

};

NSArray *resultArray2 = [charArray sortedArrayUsingComparator:sort];

NSLog(@"字符串数组排序结果%@",resultArray2);

对于NSStringCompareOptions,大家可以看看系统的说明:

enum{

NSCaseInsensitiveSearch = 1,//不区分大小写比较

NSLiteralSearch = 2,//区分大小写比较

NSBackwardsSearch = 4,//从字符串末尾开始搜索

NSAnchoredSearch = 8,//搜索限制范围的字符串

NSNumbericSearch = 64//按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7.txt < Foo25.txt

//以下定义高于 mac os 10.5 或者高于 iphone 2.0 可用

,

NSDiacriticInsensitiveSearch = 128,//忽略 "-" 符号的比较

NSWidthInsensitiveSearch = 256,//忽略字符串的长度,比较出结果

NSForcedOrderingSearch = 512//忽略不区分大小写比较的选项,并强制返回 NSOrderedAscending 或者 NSOrderedDescending

//以下定义高于 iphone 3.2 可用

,

NSRegularExpressionSearch = 1024//只能应用于 rangeOfString:..., stringByReplacingOccurrencesOfString:... replaceOccurrencesOfString:... 方法。使用通用兼容的比较方法,如果设置此项,可以去掉 NSCaseInsensitiveSearch NSAnchoredSearch

}

最新文章

  1. kali linux Python开发环境初始化
  2. MongoDB (三) MongoDB 安装
  3. Linux Systemd——在RHEL/CentOS 7中启动/停止/重启服务
  4. Razor学习(二)@Html标签
  5. c# propertyGrid下拉选项
  6. Inno setup 中 执行参数传递注意的地方
  7. 浅谈“Mysql”的基础操作语句
  8. 12.21-Android ServerSocket
  9. 2018年的UX设计师薪酬预测,你能拿多少?
  10. 使用react-router实现单页面应用路由
  11. HDU5992 - Finding Hotels
  12. Lua rawget rawset newindex 函数定义和例子
  13. omit 配合antd from使用 hoistStatics
  14. Linux下添加windows字体
  15. 洛谷 P2042 【[NOI2005]维护数列】
  16. 【JavaScript】常用的数据类型的处理方式
  17. rocketmq ----&gt; 学习笔记
  18. yarn 工作原理(2)
  19. Java之JSON处理(JSONObject、JSONArray)
  20. Spring 概念

热门文章

  1. MaxPlus WStr Python 中的字符串传递给 MaxPlus
  2. JDK源码那些事儿之并发ConcurrentHashMap下篇
  3. Python基本的语法知识
  4. Hive和HBase的区别 转载:https://www.cnblogs.com/guoruibing/articles/9894521.html
  5. NOSQL数据库简介
  6. GIL 信号量 event事件 线程queue
  7. TDOA 基础之 双曲线
  8. html中的table导出Excel (亲测有用(●&#39;◡&#39;●))
  9. 学到了林海峰,武沛齐讲的Day16完
  10. exam9.6&amp;&amp;7