一、compare在要比较的字符串中,依次取出对应的数组元素,按ascii码值比较,如果ascii值能比较出结果了,就不往后比较。
二、在进行比较时,可以添加如下条件进行比较:
NSCaseInsensitiveSearch = 1, 不区分大小写比较
NSLiteralSearch = 2, Exact character-by-character equivalence 区分大小写比较,默认的
NSNumericSearch = 64,
Numbers within strings are compared using numeric value, that is, Foo2.txt < Foo7.txt < Foo25.txt; only applies to compare methods, not find 这个条件根据文档注释意思是,字符中的相应下表的数是用元素的值进行比较的,很多同学都会误解为比较的是每个字符串的个数,其实不然,这三种条件都是建立在ascii码值基础上的比较。
如果有多个比较条件,加一个|然后加比较条件
简单的字符串值比较,我们可以用isEqualToString来完成,因为它比较的也是值
三、代码分析
#import <Foundation/Foundation.h>
int main()
{
@autoreleasepool {
// NSString *str=@"You are the besta";
// NSString *str1=@"you are the best";
//当条件为NSNumericSearch|NSCaseInsensitiveSearch时运行结果
// 2016-01-27 22:02:38.192 OC5[1084:49546] 降序
// Program ended with exit code: 0
NSString *str=@"You are the besta";
NSString *str1=@"you are the best";
//当条件为NSNumericSearch时运行结果,如果像理解的比较的是字符串的个数,此处打印应为降序,但打印结果如下,所以可知,这个条件在ascii码值基础上进行比较
// 2016-01-27 22:10:17.662 OC5[1108:50918] 升序
// Program ended with exit code: 0
//(NSStringCompareOptions)比较时可以添加条件
NSComparisonResult result = [str compare:str1 options:NSNumericSearch];//比较的是字符串的值,如果有多个比较条件,加一个|然后加比较条件
switch (result) {
case NSOrderedAscending:
NSLog(@"升序");
break;
case NSOrderedSame:
NSLog(@"相同");
break;
case NSOrderedDescending:
NSLog(@"降序");
break;
default:
break;
}
}
return0;
}