/*
比较两个字符串:- (NSComparisonResult)compare:(NSString *)string;
返回值是枚举:NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending
比较的实际上每个位置上的字母的ascii码值
从第一个字母开始比较,比较两个的ascii码值,ascii码值大的立刻胜出
比较的时候,区分大小写,小写的ascii码大于大写的ascii码值
*******************************************************************************************
按你的条件比较(第二个参数是比较的条件)
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
NSCaseInsensitiveSearch:不区分大小写比较
NSLiteralSearch:区分大小写(默认的)
NSNumericSearch:比较字母的ascii码,如果遇到数字,不比较ascii码,比较数字的值
当有多个比较条件,条件和条件之间加一个|就OK了
***************************************************************************************
比较两个字符串是否相等:
1.调用compare方法:既能比较内容是否相同,也能比较出谁大谁小
2. == 判断
3.isEqualToString:
这三种比较方式,第一种(compare)和第三种(isEqualToString),比较的是字符串的内容
而第二种(==),比较的是字符串的地址
*/
#import <Foundation/Foundation.h>
void c1(NSString *str1,NSString *str2){
NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
switch (result) {
case NSOrderedAscending:
NSLog(@"compare str1<str2");
break;
case NSOrderedSame:
NSLog(@"compare相同");
break;
case NSOrderedDescending:
NSLog(@"compare str1>str2");
break;
default:
break;
}
}
void c2(NSString *str1,NSString *str2){
if (str1 == str2) {
NSLog(@"==比较,相等");
}else{
NSLog(@"==比较,不相等");
}
}
void c3(NSString *str1,NSString *str2){
if ([str1 isEqualToString:str2]) {
NSLog(@"isEqualToString,两个相同");
}else {
NSLog(@"isEqualToString,两个不相同");
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"yueyue";//常量区
NSString *str2 = @"yueyue";
NSString *str3 = [NSString stringWithFormat:@"%@",@"yueyue"];//堆区
c1(str1, str3);
c2(str1, str3);
c3(str1, str3);
}
return 0;
}
void compare1Test(){
NSString *str1 = @"YUEYUE011.txt";
NSString *str2 = @"yueyue30.txt";
//要同时有多个比较条件
NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
switch (result) {
case NSOrderedAscending:
NSLog(@"str2>str1");
break;
case NSOrderedSame:
NSLog(@"两个人一样好听");
break;
case NSOrderedDescending:
NSLog(@"str1>str2");
break;
default:
break;
}
}
void compareTest(){
//abcdefghijklmnopqrstuvwxyz
NSString *str1 = @"Ming";
NSString *str2 = @"ming";
NSComparisonResult result = [str1 compare:str2];
switch (result) {
case NSOrderedAscending:
NSLog(@"str2>str1");
break;
case NSOrderedSame:
NSLog(@"两个人一样好听");
break;
case NSOrderedDescending:
NSLog(@"str1>str2");
break;
default:
break;
}
//我比较的时候,不想区分大小写
result = [str1 compare:str2 options:NSCaseInsensitiveSearch];
switch (result) {
case NSOrderedAscending:
NSLog(@"str2>str1");
break;
case NSOrderedSame:
NSLog(@"两个人一样好听");
break;
case NSOrderedDescending:
NSLog(@"str1>str2");
break;
default:
break;
}
/* Added in 10.2; Numbers within strings are compared using numeric value, that is, Foo2.txt < Foo7.txt < Foo25.txt; only applies to compare methods, not find */
// [str1 compare:str2 options:NSNumericSearch];
NSString *str3 =@"aaa111";
NSString *str4 = @"aaa21";
// result = [str3 compare:str4 ]; //str4>str3
result = [str3 compare:str4 options:NSNumericSearch];//str3>str4
switch (result) {
case NSOrderedAscending:
NSLog(@"str4>str3");
break;
case NSOrderedSame:
NSLog(@"两个人一样好听");
break;
case NSOrderedDescending:
NSLog(@"str3>str4");
break;
default:
break;
}
}