黑马程序员——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的方法比较字符串大小:
这种比较字符串的方法是区分大小写的,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:比较的才是字符串的值的大小。
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:比较的才是字符串的值的大小。
相关文章推荐
- 第19讲----项目2 C语言中的字符对齐
- C++调用C函数,为什么要加extern "C"?
- Leetcode NO.249 Group Shifted Strings
- C++调用python
- C++模板与泛型编程基础
- python 调用 C++ code
- C++常见容器概述
- 使用NDK生成native C/C++的可执行程序
- 三个数找最大 2.0
- C语言位运算
- C++类class和结构体struct的区别
- C语言函数的简单递归调用
- leetcode笔记:Sum Root to Leaf Numbers
- C++类中 虚函数与纯虚函数的区别和作用
- C语言数据类型
- Qt C++制作贪吃蛇游戏(在Qt5.4.2可以正常运行)
- C语言基础知识/编译器操作
- C语言关键字
- C语言中结构体的初始化
- 洛谷P1024/NOI题库7891(2.3)/NOIP2001提高组T1 一元三次方程求解