OC NSString字符串比较

/*

    比较两个字符串:- (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;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值