typedefNS_OPTIONS(NSUInteger, NSStringCompareOptions) {
NSCaseInsensitiveSearch = 1,? ? //不區(qū)分大小寫比較
NSLiteralSearch = 2,? ? //逐字節(jié)比較 區(qū)分大小寫
NSBackwardsSearch = 4,? ? //從字符串末尾開(kāi)始搜索
NSAnchoredSearch = 8,? ? //搜索限制范圍的字符串
NSNumericSearch = 64,? ? //按照字符串里的數(shù)字為依據(jù),算出順序。例如 Foo2.txt < Foo7.txt < Foo25.txt
NSDiacriticInsensitiveSearchNS_ENUM_AVAILABLE(10_5, 2_0) = 128,//忽略 "-" 符號(hào)的比較
NSWidthInsensitiveSearchNS_ENUM_AVAILABLE(10_5, 2_0) = 256,//忽略字符串的長(zhǎng)度,比較出結(jié)果
NSForcedOrderingSearchNS_ENUM_AVAILABLE(10_5, 2_0) = 512,//忽略不區(qū)分大小寫比較的選項(xiàng),并強(qiáng)制返回 NSOrderedAscending 或者 NSOrderedDescending
NSRegularExpressionSearchNS_ENUM_AVAILABLE(10_7, 3_2) = 1024? //只能應(yīng)用于 rangeOfString:..., stringByReplacingOccurrencesOfString:...和 replaceOccurrencesOfString:... 方法。使用通用兼容的比較方法,如果設(shè)置此項(xiàng),可以去掉 NSCaseInsensitiveSearch 和 NSAnchoredSearch
};
NSArray *stringsArray = [NSArrayarrayWithObjects:
@"string 10",
@"String 1",
@"string 120",
@"String 1100",
@"String 02000",nil];
NSStringCompareOptions comparisonOptions =NSCaseInsensitiveSearch |NSNumericSearch |NSWidthInsensitiveSearch |NSForcedOrderingSearch;
NSLocale *currentLocale = [NSLocalecurrentLocale];
NSComparator finderSortBlock = ^(id string1,id string2) {
NSRange string1Range =NSMakeRange(0, [string1 length]);
return [string1compare:string2options:comparisonOptionsrange:string1Range locale:currentLocale];
};
NSArray *finderSortArray = [stringsArraysortedArrayUsingComparator:finderSortBlock];
NSLog(@"finderSortArray: %@", finderSortArray);
finderSortArray: (
"String 1",
"string 10",
"string 120",
"String 1100",
"String 02000"
)
轉(zhuǎn)自 http://blog.csdn.net/oqqquzi1234567/article/details/25377851