//
字符串的比较以及排序问题
//(NSOrderedSame NSOrderedAscending NSOrderedDescending)
- ( void )viewDidLoad {
[ super viewDidLoad ];
// Do any additional setup after loading the view.
}
-( void )compareForString
{
// 单纯的比较字符串
NSString * a = @"abcde" ;
NSString * b = @"bacdE" ;
NSString * c = @"ABCDE" ;
// 不考虑大小写比较字符串
NSComparisonResult result = [a caseInsensitiveCompare :c];
NSComparisonResult result2 = [a compare :b];
if (result2 == NSOrderedSame ) {
NSLog ( @"a = b" );
} else if (result2 == NSOrderedAscending ){
NSLog ( @"a < b" );
} else {
NSLog ( @"a > b" );
}
}
-( void )compareForCount
{
// 单纯的比较数字
NSString * a = @"435" ;
NSString * b = @"789" ;
NSComparisonResult result = [a compare :b];
if (result == NSOrderedSame ) {
NSLog ( @"a = b" );
} else if (result == NSOrderedAscending ){
NSLog ( @"a < b" );
} else {
NSLog ( @"a > b" );
}
}
-( void )compare
{
NSString *a = @"i love my boyfriend." ;
NSString *b = @"I Love My Boyfriend." ;
NSLog ( @" \n a: %@ \n" ,a);
NSLog ( @" \n b: %@ \n" ,b);
// 有选择的比较大小 ( 忽略大小写的比较字符串 && 比较字符串的个数 )
BOOL result = [a compare :b options : NSCaseInsensitiveSearch | NSNumericSearch ] == NSOrderedSame ;
}
// 比较总结
/***
1.
- NSOrderedSame = 0 完全一样
- NSOrderedAscending = -1
- NSOrderedDescending = +1
2.
- NSCaseInsensitiveSearch 忽略大小写的比较字符串
- NSNumericSearch 比较字符串的个数
- NSLiteralSearch 区分大小写,进行完全比较
*/
// 通用的排序方法,也可以用于 model 里面的元素比较
-( void )sortForNomal
{
NSMutableArray *p = [[ NSMutableArray alloc ] initWithObjects : @"S1" , @"S14" , @"S3" , @"S4" , @"S12" , @"S6" , @"S7" , @"S8" , @"S9" , @"S10" , @"S11" , @"S5" , @"S13" , @"S2" , nil ];
[p sortUsingComparator :^ NSComparisonResult ( id obj1, id obj2) {
NSString *a = ( NSString *)obj1;
NSString *b = ( NSString *)obj2;
int aNum = [[a substringFromIndex : 1 ] intValue ];
int bNum = [[b substringFromIndex : 1 ] intValue ];
if (aNum > bNum) {
return NSOrderedDescending ;
}
else if (aNum < bNum){
return NSOrderedAscending ;
}
else {
return NSOrderedSame ;
}
}];
NSLog ( @"p %@" , p);
}
//(NSOrderedSame NSOrderedAscending NSOrderedDescending)
- ( void )viewDidLoad {
[ super viewDidLoad ];
// Do any additional setup after loading the view.
}
-( void )compareForString
{
// 单纯的比较字符串
NSString * a = @"abcde" ;
NSString * b = @"bacdE" ;
NSString * c = @"ABCDE" ;
// 不考虑大小写比较字符串
NSComparisonResult result = [a caseInsensitiveCompare :c];
NSComparisonResult result2 = [a compare :b];
if (result2 == NSOrderedSame ) {
NSLog ( @"a = b" );
} else if (result2 == NSOrderedAscending ){
NSLog ( @"a < b" );
} else {
NSLog ( @"a > b" );
}
}
-( void )compareForCount
{
// 单纯的比较数字
NSString * a = @"435" ;
NSString * b = @"789" ;
NSComparisonResult result = [a compare :b];
if (result == NSOrderedSame ) {
NSLog ( @"a = b" );
} else if (result == NSOrderedAscending ){
NSLog ( @"a < b" );
} else {
NSLog ( @"a > b" );
}
}
-( void )compare
{
NSString *a = @"i love my boyfriend." ;
NSString *b = @"I Love My Boyfriend." ;
NSLog ( @" \n a: %@ \n" ,a);
NSLog ( @" \n b: %@ \n" ,b);
// 有选择的比较大小 ( 忽略大小写的比较字符串 && 比较字符串的个数 )
BOOL result = [a compare :b options : NSCaseInsensitiveSearch | NSNumericSearch ] == NSOrderedSame ;
}
// 比较总结
/***
1.
- NSOrderedSame = 0 完全一样
- NSOrderedAscending = -1
- NSOrderedDescending = +1
2.
- NSCaseInsensitiveSearch 忽略大小写的比较字符串
- NSNumericSearch 比较字符串的个数
- NSLiteralSearch 区分大小写,进行完全比较
*/
// 通用的排序方法,也可以用于 model 里面的元素比较
-( void )sortForNomal
{
NSMutableArray *p = [[ NSMutableArray alloc ] initWithObjects : @"S1" , @"S14" , @"S3" , @"S4" , @"S12" , @"S6" , @"S7" , @"S8" , @"S9" , @"S10" , @"S11" , @"S5" , @"S13" , @"S2" , nil ];
[p sortUsingComparator :^ NSComparisonResult ( id obj1, id obj2) {
NSString *a = ( NSString *)obj1;
NSString *b = ( NSString *)obj2;
int aNum = [[a substringFromIndex : 1 ] intValue ];
int bNum = [[b substringFromIndex : 1 ] intValue ];
if (aNum > bNum) {
return NSOrderedDescending ;
}
else if (aNum < bNum){
return NSOrderedAscending ;
}
else {
return NSOrderedSame ;
}
}];
NSLog ( @"p %@" , p);
}