1. 比较两个字符串的大小
//第一个参数是要进行比较的字符串, 第二个参数是比较的方法, 是一个枚举的类型
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
枚举的值: 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
}
2. 数组的排序问题
NSArray *originalArray = @[@"dfg",
@"dfa",
@"gde",
@"mgc",
@"faa"];
/// 方法1: sortedArrayUsingComparator
NSArray *result1 = [originalArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
NSComparisonResult result;
result = [obj1 compare:obj2 options:NSLiteralSearch];
return result;
}];
NSLog(@"result1 = %@", result1);
/// 方法2: sortedArrayUsingFunction: 参数是一个C语言函数的函数指针.
// NSArray *result2 = [originalArray sortedArrayUsingFunction:(nonnull NSInteger (*)(id _Nonnull __strong, id _Nonnull __strong, void * _Nullable)) context:nil]
// 方法3: sortUsingDescriptors
//其中,price为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便
// NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES];
// NSArray *result3 = [originalArray sortedArrayUsingDescriptors:@[sortDescriptor]];
// 方法4: sortUsing
NSArray *result4 = [originalArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"result4 = %@", result4);
/*
//自定义排序方法
-(NSComparisonResult)comparePerson:(Person *)person{
//默认按年龄排序
NSComparisonResult result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];//注意:基本数据类型要进行数据转换
//如果年龄一样,就按照名字排序
if (result == NSOrderedSame) {
result = [self.name compare:person.name];
}
return result;
}
*/
来源:oschina
链接:https://my.oschina.net/u/2501614/blog/663076