------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:比较的才是字符串的值的大小。