黑马程序员----oc加强笔记----Foundation\NSString
来源:互联网 发布:淘宝开抢提醒 编辑:程序博客网 时间:2024/05/21 22:53
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、字符串的比较
1)比较字符串大小
字符串根据排列顺序的不同,会有大小的差异,如果我们要比较两个字符串的大小的话,可以使用compare方法。
compare 方法返回的结果有三种:
NSOrderedAscending,NSOrderedSame,NSOrderedDescending,
str > str2 NSOrderedDescending 1
str<str2 NSOrderedAscending -1
str==str2 NSOrderedSame
另外,在使用compare方法时可以添加参数来决定是否区分大小写,或者声明为比较字符串个数而不是字符值等比较条件
2)比较字符串大小,指定条件
如果要忽略大小写的话,可以在options里面加一个参数NSCaseInsensitiveSearch;具体如下NSComparisonResult result2 =[str1 compare:str2 options:NSCaseInsensitiveSearch];
常见的有3个
NSCaseInsensitiveSearch:不区分大小写字符。
NSLiteralSearch:进行完全比较,区分大小写。
(默认)NSNumericSearch:比较字符串的字符个数,而不是字符值。
int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 = @"abc"; // a 97 NSString *str2 = @"abc"; // A 65 //取出每个字符的ASCII码值 ,比较ASCII码值大小 //compare方法比较大小 //compare 默认的区分大小写的 //compare 这个函数,不能增加条件 // NSComparisonResult result = [str1 compare:str2]; //比较的时候,不区分大小写,参考字符的个数 NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch]; // switch (result) { case NSOrderedAscending: NSLog(@"str1 < str2 升序"); break; case NSOrderedDescending: NSLog(@"str1 > str2 降序"); break; case NSOrderedSame: NSLog(@"str1 == str2 "); break; default: break; NSString *str3 = [NSString stringWithFormat:@"Abc"]; //地址的比较 // "==" 不能够判断字符串是否相等的 //判断字符串内容真正是否相等,使用是 //isEqualToString: //注意:他是区分大小写的 if ([str1 isEqualToString:str3]) { NSLog(@"相等"); }else{ NSLog(@"不相等"); } } return 0;}2、NSString前后缀检查及搜索
1)判断字符串前缀
检查字符串是否以另一个字符串开头
-(BOOL) hasPrefix: (NSString *) aString;
代码及理解:
NSString *url = @"https://ios.itcast.cn"; //如何检测这个字符串是否是一个网址 //http:// https:// // 检测一个字符串的前缀是否以 http:// 开头 或者 https:// 开头 // [str hasPrefix:@"要检测的内容"]; if([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"]){ NSLog(@"是一个网址"); }else{ NSLog(@"这不是一个网址"); }
2)判断字符串后缀
判断字符串是否以另一个字符串结尾
-(BOOL) hasSuffix: (NSString *) aString;
//检测字符串的后缀 // xxxx.jpg 判断 字符串的后缀是否是".jpg" // xxxx.png // xxxx.jpeg // xxxx.gif NSString *imgName = @"xxxxx.doc"; // [str hasSuffix:@"带检测的后缀"] if([imgName hasSuffix:@".jpg"]||[imgName hasSuffix:@".png"]||[imgName hasSuffix:@".jpeg"]||[imgName hasSuffix:@".gif"]){ NSLog(@"是一个图片"); }else{ NSLog(@"这不是一个图片"); }
2、字符串查找
- (NSRange)rangeOfString:(NSString *)aString;
用来检查字符串内容中是否包含了aString
如果包含, 就返回aString在字符串中第一次出现的范围
//字符串的查找 // 查找某个字符串在另外一个字符串中首次出现的位置 // 0123456789 //1 @"asdaiosffsdafiosasdfsffitcastasdfasd" //2 @"ios" // 4 3 // 1 rangOfString 2 NSString *str1 =@"asdaiosffsdafiosasdfsffitcastasdfasd"; NSString *str2 =@"cjk"; // 字符串查找 // 查找2 在 1中首次出现的位置 // 如果查找到了,返回2在1中的位置和长度 // 如果查找不到,返回的信息: // location 特别大的数(NSNotFound) 最大的long类型的数 // length 0 // range 结构体变量 NSRange 结构别名 NSRange range = [str1 rangeOfString:str2]; //判断是否查找到了 if(range.location!=NSNotFound){ //range.location 表示字符串首次出现的位置 //range.length 字符串出现的长度(实质上就是子字符串的长度) NSLog(@"%lu,%lu",range.location,range.length); }else{ NSLog(@"在%@中没有找到这个字符串%@",str1,str2); }3、NSRange
NSRange使用
NSRange是Foundation框架中比较常用的结构体, 它的定义如下:
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
// NSUInteger的定义
typedef unsigned int NSInteger;typedef unsigned long NSUInteger;
NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
NSRange有2个成员
NSUInteger location :表示该范围的起始位置
NSUInteger length : 表示该范围内的长度
Range的创建方法:
int main(int argc, const char * argv[]) { @autoreleasepool { NSRange range; //range 结构体变量 NSRange *r ; // r 结构体指针 //range变量的初始化方式 //1) 通过结构体变量访问成员 range.location = 3; range.length = 2; //2) 结构体变量整体赋值 range = (NSRange){5,3}; NSRange r2 = {4,5}; //最简单的 //3) NSRange r3 = {.location = 3}; //只是给结构体变量中的.location 成员赋值 //4) OC中新增的 //NSMakeRange函数的作用给 NSRange结构体变量赋值 NSRange r4 = NSMakeRange(3, 3); //查看结构体变量的值 NSLog(@"%ld,%ld",r4.location,r4.length); //可以把结构体变量转换为 NSString类型 NSLog(@"%@",NSStringFromRange(r4)); } return 0;}4、字符串的截取
- (NSString *)substringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部
- (NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
- (NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串
NSString *str = @"<itcast>传智iOS学院最牛X</itcast>"; // @">" loc+1 NSUInteger loc = [str rangeOfString:@">"].location + 1; //"传"得位置 // @"</" loc NSUInteger len = [str rangeOfString:@"</"].location - loc; //要截取的字符的长度 // 构建 ruange NSRange r2 = {loc,len}; // 截取 NSString *subStr = [str substringWithRange:r2]; NSLog(@"subStr = %@",subStr);结果:
5、字符串的替换
//字符串的替换 // @"asdfsdafasdfdasdfsa" ----> a 替换成 "*" // @" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa" NSString *str =@"asdfsdafasdfdasdfsa"; // str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容" //把a替换成 * NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"]; NSLog(@"newStr = %@",newStr); // 把空格给去掉 str =@" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa"; newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""]; NSLog(@"newStr = %@",newStr); //将http:**ios.itcast.cn*ios*images*content_25.jpg中的*替换为/ str =@"http:**ios.itcast.cn*ios*images*content_25.jpg"; newStr = [str stringByReplacingOccurrencesOfString:@"*" withString:@"/"]; NSLog(@"newStr = %@",newStr); // http:** ios.itcast.cn *ios*images* content_25.jpg // 1) 空格 替换成空 // 2) 把*替换成/ str = @"http:** ios.itcast.cn *ios*images* content_25.jpg"; newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""]; newStr = [newStr stringByReplacingOccurrencesOfString:@"*" withString:@"/"]; NSLog(@"newStr = %@",newStr);结果:
- 黑马程序员----oc加强笔记----Foundation\NSString
- 黑马程序员-OC-Foundation-NSString
- 黑马程序员-OC笔记(八) Foundation 结构体 NSString
- 黑马程序员-----oc语言学习笔记之foundation框架-NSString
- 黑马程序员-OC学习笔记-----Foundation框架(常用结构体和NSString)
- 黑马程序员——ios学习笔记 OC Foundation—NSString
- 黑马程序员---OC学习笔记之Foundation框架:NSString的基本使用
- 黑马程序员--OC自学笔记---10Foundation、NSString、NSURL、NSRange、NSArray、NSMutableArray、NSDictionary
- 黑马程序员----OC Foundation框架--结构体、NSString
- 黑马程序员--OC的Foundation框架之NSString
- 黑马程序员——OC基础---Foundation之NSString
- 【黑马程序员】OC-Foundation框架—NSString和NSRange
- 黑马程序员——OC基础---Foundation<NSString,NSArray,NSMultableString>
- 黑马程序员——OC语言加强---Foundation框架介绍
- 黑马程序员----oc加强笔记----内存管理
- 黑马程序员----oc加强笔记----分类(Gategory)
- 黑马程序员----oc加强笔记----block
- 黑马程序员---oc Foundation
- Android添加快捷方式(Short)到手机桌面
- Android设计模式之工厂模式
- 今年谷歌会重返中国市场?
- R cannot be resolved to a variable 解决办法
- this和super
- 黑马程序员----oc加强笔记----Foundation\NSString
- 4-1、自定义InputFormat 类代码
- hdu 4279 Number 2012天津网络赛 数论 分析
- 2015版互联网人跳槽指南
- Android ActionBar常用功能代码整理
- nucleo F072开发板 SPI tft 屏显
- java 几种简单排序实现代码
- 带最小值操作的栈
- mysql group by 用法解析(详细)