NSString字符串比较
1.字符串比较函数
1)比较字符串的大小-----compare方法,compare返回结果三种
str > str2 NSOrderedDescending 1
str < str2 NSOrderedAscending -1
str = str2 NSOrderedSame 0
例子:
NSComparisonResult result = [str compare:str2];
可以设置比较条件:
NSComparisonResult result = [str compare:str2 options:NSCaseInsensitiveSearch];//比较的时候不区分大小写
NSComparisonResult result = [str compare:str2 options:NSCaseInsensitiveSearch | NSNumericSearch];//比较的时候,
既不区分大小写,同时又要比较字符个数
还有一个参数NSLiteralSearch:进行完全比较,区分大小写,这也是默认情况下的方式。
2)判断字符串是否相等
==不能够判断字符串相等
NSString *str1 = @”abc“;//地址在常量区
NSString *str2 = @”abc“;//地址在常量区
NSString *str3 = [NSString stringWithoutFormat:@"abc"];//地址在堆区
if(str1 == str2)//比较后结果是1,因为str1和str2比较的是地址,而在常量区同样的变量只保存一份,故而两者相同
NSLog(@"1");
else
NSLog(@"0");
if(str1 == str3)//比较结果为0,因为地址不相同
NSLog(@"1");
else
NSLog(@"0");
故这种比较方法是错误的。正确的比较方法如下:
//使用isEqualToString,该方法的返回值为bool类型YES和NO。该方法是区分大小写的。
if([str1 isEqualToString:str3])
2.NSString的前后缀检查及搜索
1)NSString的前后缀检查hasPrefix/hasSuffix
检测前缀:
NSString *url = @"http://www.baidu.com";
检查输入的是不是一个网址(及是否以http开头或者https开头)
if([url hasPrefix:@"http://"] || [url hasPrefix:@"http://"]){
NSLog(@"是一个网址")
}
else{
NSLog(@"不是一个网址");
}
检测后缀:
判断是不是一个图片
NSString *imgName = @"xxxxx.jpg";
if([imgName hasSuffix:@".jpg"]){
NSLlog(@"是一张图片");
}
else{
NSLog(@"不是一张图片");
}
2)字符串查找(某个字符串是否包含在另一个字符串中,存在于另一个字符串中的位置),
str1 rangofString str2;//查找str2在str1中首次出现的位置,location+length.
NSString * str1 = @"asdfqwezxcasdqwe";
NSString * str2 = @"qwe";
NSRange range = [str1 rangeofString:str2];
if(range.location != NSNotFound){//如果没有查找到,返回值为long类型的最大整型数。
NSLog(@"%lu,%lu",range.location,range.length);
}
else{
NSLog(@"没有找到字符串");
}
3.NSString的其他用法
(1)获取字符串的每个字符
[str characterAtIndex:i];
(2)字符串和其他字符串的转换问题
字符串转各种数值
NSString *str = @"1";
NSString *str1 = @"3.14";
int b = [str intValue];
float a = [str1 floatValue];
OC的字符串和C的字符串的相互转换
C字符串转化为OC思路:
1)用C创建一个C语言字符串
2)将C创建的C字符串转化为OC中的字符串对象
char *s = "zhangsanfeng";
printf("%s",s);
NSString *str =[NSString stringWithUTF8String:s];
NSLog(@"str = %@",str);
OC字符串转换为C字符串
NSString *str = @"zbz";
const char *s1 = [str UTF8String]; |
|