您的位置:首页 > 编程语言 > C语言/C++

黑马程序员——OC语言日志——NSString字符串的比较函数

2015-10-24 09:31 585 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1、比较字符串大小

字符串根据排列顺序的不同,会有大小的差异,如果我们要比较两个字符的大小的话,可以使用compare的方法。

compare方法返回的解惑有三种:

NSOrderedAscending,NSOrderenSame,NSOraereDescending

str>str2   NSOraereDescending      1

st<str2    NSOrderedAscending       -1

str=str2   NSOrderenSame                0

使用compare的方法比较字符串大小:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"caa";
NSString *str2 = @"Caa";
//取出没个字符的ASCII码值,比较ASCII值大小
//compare比较字符串,默认区分大小写

NSComparisonResult result = [str1 compare:str2];
switch (result) {
case NSOrderedAscending:   //值为-1
NSLog(@"NSOrderedAscending=result=%ld str1<str2 升序",result);
break;
case NSOrderedDescending://值为1
NSLog(@"NSOrderedDescending=result=%ld str1>str2 降序",result);
break;
case NSOrderedSame://值为0
NSLog(@"NSOrderedSame=result=%ld str1=str2 相等",result);
break;

default:
break;
}

}
return 0;
}
结果打印:NSOrderedDescending=result=1 str1>str2 降序

这种比较字符串的方法是区分大小写的,c的ASCII码大于C的ASCII码值。

2、通过指定条件比较字符串大小

在使用compare方法的时候可以添加参数来决定是否区分大小写,或者声明为比较字符串个数而不是字符值等比较条件。常见的有三个:

NSCaseInsensitiveSearch:不区分大小写字符。

NSLiteralSearch:进行完全比较,区分大小写。

NSNumericSearch:比较字符串的字符个数,而不是字符值。

如果要忽略大小写的话,可以在option里面加一个参数NSCaseInsensitiveSearch具体如下:

/******加条件**********/

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"caa";
NSString *str2 = @"Caa";
//取出没个字符的ASCII码值,比较ASCII值大小
//compare比较字符串添加NSCaseInsensitiveSearch条件
//不区分大小写

NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch];
switch (result) {
case NSOrderedAscending: //值为-1
NSLog(@"NSOrderedAscending=result=%ld str1<str2 升序",result);
break;
case NSOrderedDescending://值为1
NSLog(@"NSOrderedDescending=result=%ld str1>str2 降序",result);
break;
case NSOrderedSame://值为0
NSLog(@"NSOrderedSame=result=%ld str1=str2 相等",result);
break;

default:
break;
}

}
return 0;
}
打印结果:NSOrderedSame=result=0 str1=str2 相等
而且也可以使用“|”增加多个条件,如增加字符串中字符个数的比较:

NSString *str1 = @"caa";
NSString *str2 = @"Caaa";
NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];//再或上一个NSNumericSearch条件,比较个数
3、判断字符是否相等
判断字符串是否相等,传统意义上的比较是用“==”,如:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"caa";
NSString *str2 = [NSString stringWithFormat:@"caa"];
if(str1==str2)//使用“==”判断,其实判断的是指针指向的地址大小
{
NSLog(@"相等");

}
else{
NSLog(@"不相等");
}

}
return 0;
}
打印结果为:不相等
这中比较方式不正确,因为str1和str2都是指针变量,二者相比,比较的是指针变量内存储的值的大小,即字符地址的大小,两组字符串值虽然一样,但是存储地址不一样,所以不能用“==”进行比较,那么我们可以使用另一个函数进行比较:isEqualToString:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"caa";
NSString *str2 = [NSString stringWithFormat:@"caa"];

if([str1 isEqualToString:str2])//比较的是字符串值
{
NSLog(@"相等");

}
else
{
NSLog(@"不相等");
}

}
return 0;
}
打印:相等

isEqualToString:比较的才是字符串的值的大小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: