黑马程序员———Objctive-C———【NSString及NSMutalbeString的使用】
来源:互联网 发布:练小键盘的软件 编辑:程序博客网 时间:2024/06/12 19:47
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
——————————————————————————————————————————————————————————————————
compare方法返回的结果有三种:NSOrderedAscending,NSOrderedSame,NSorderedDescending.
str > str2 , NSOrderedDescending 1
str < str2 , NSOrderedAscending -1
str = str2 , NSOrderedSame 0NSString *str=@"abc";
另外,在使用compare方法时可以添加参数来决定是否区分大小写,或者声明为比较字符串个数而不是字符值等比较条件
NSString *str2=@"bcd";
NSComparisonResult result=[str compare:str2];
switch(result){
case NSOrderedDescending:
NSLog(@" str < str2 ");
case NSOrderedSame
NSLog(@" str = str2 ");
case NSorderedDescending
NSLog(@" str > str2 ");
}
常见的有3个
NSCaseInsensitiveSeaich:不区分大小写字符
NSLiteralSearch:进行完全比较,区分大小写
NSNumbericSearch:比较字符串的字符个数,而不是字符值,例:NSComparisonResult result=[str compare:str2 options:NSCaseInsensitiveSeaich];
另外,还有|的应用,例:NSComparisonResult result=[str compare:str2 options:NSCaseInsensitiveSeaich|NSNumbericSearch];
表示既不区分大小写同时比较字符的个数
(1)判断字符串前缀
如:判断地址是否是网址
file://
ftp://
https://
http://
检查字符串是否以另一个字符串开头
- (BOOL) hasPrefix:(NSString *) aString;
NSString *url=@"htt://www.baidu.com";
if([url hasPrefix:@"http:"]){
NSLog("这是一个网址");
}else{
NSLog("这不是一个网址.");
}
(2)判断字符串后缀如:判断地址是否是图片
xxxx.jpg
xxxx.png
xxxx.gif
xxxx.jpeg
检查字符串是否以另一个字符串结尾
- (BOOL) hasPrefix:(NSString *) aString;
NSString *url=@"photo.jpg";
if([url hasPrefix:@".jpg"]){
NSLog("这是一个图片");
else{
NSLog("这不是一个图片.");
}
字符串的查找:查找一个字符串在另一个字符串首次出现的位置,以及该字符串的所占长度
查找str中首次出现str2的位置,即[str rangeOfString:str2];
返回值是NSRange类型,是一个结构体类型,包含两个结构体变量,NSUInteger类型的location及length
如果查找不到,返回的location是一个特别大的数(NSNotFound),length是0
NSNotFound = NSIntegerMax = Long_Max 一个最大的long类型的数
NSString *str=@"dasfiosfsdafsdiossf";
NSString *str2=@"ios";
NSRange range=[str rangeOfString:str2];
if(range.location!=NSNotFound){
NSLog(@"location=%lu,length=%lu",range.location,range.length);
}else{
NSLog(@"str中没有找到这个str2");
}
NSRange用来表示一个范围,location表示起始位置,length表示长度.
typedef unsigned int NSInteger; 起别名
typedef unsigned long NSUInteger; 起别名
typedef struct _NSRange{
NSUInteger location;
NSUInteger length;
} NSRange;
C中创建Range的方法:给结构体赋值的方法.
OC中创建Range的方法:Range r=NSMakeRange(3,3); 底层就是给结构体变量赋值.
访问方法:NSLog(@"%ld,%ld",r.location,r.length);
打印的是:3,3
把NSRange转换成NSString类型:NSStringFromRange(NSRange r);
访问方法:NSLog(NSStringFromRange(NSRange r));
打印的是:{3,3}
(1)字符串的截取
- (NSString *)subStringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部.
- (NSString *)subStringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
- (NSString *)subStringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子字符串
(2)字符串的替换- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *) replacement;
用replacement替换target,返回一个新字符串.
记忆技巧:stringByReplacingOccurrencesOfString中提到occurrent即当前的字符串,即原字符串.
获取字符串的字符
- (NSUInteger)length;
返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)
- (unichar)characterAtIndex:(NSUInteger)index;
返回index位置对应的字符
字符串和其他数据类型转换
字符串转为基本数据类型
- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
OC字符串和C的字符串互相转换
(1)C -> OC
char *s="zhangsan";
NSString *str=[NSString stringWithURF8String:s];
NSLog(@"%@",str);
(2)OC -> C
NSString *str2=@"zbz";
char *s1=[str2 UTF8String];
字符串去除空格
去除所有的空格
[str stringByReplacingOccurrencesOfString:@" " witString:@""];
去除首尾的空格
[str stringByTrimingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
首字母变大写,其余小写。如果有多个单词也是这样
-(NSString *)capitalizedSting;
[str stringbyTrimingCharactersInSet:[NSCharacterSet *]];以下的使用该种调用方式
去掉头尾空格
+(id)whitespaceCharacter;
去掉头尾的小写字母
+(id)lowercaseLetterCharacterSet;
去掉头尾的大写字母
+(id)uppercaseLetterCharacterSet;
去掉头尾的指定字符串
+(id)characterSetWithChatactersInString:(NSString *)aString;
NSMutableString
NSMutable和NSString的区别
NSString是不可变的,空间地址、空间大小和文字内容都不能变
NSMutableString,空间地址不变,空间大小和文字内容可变
NSMutableString能使用NSString的所有方法
常用方法
- (void)appendString:(NSString *)aString; 追加字符串
- (void)appendFormat:(NSString *)format,...; 追加格式化字符串
NSMutableString *str=[NSMutableString string];
[str appendFormat:@"http://%d",1];
NSLog(@"%@",str);
- (void)deleteCharactersInRange:(NSRange)range; 删除指定范围的字符
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc; 在loc这个位置中插入aString
- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString; 替换字符串一部分内容
注意事项
(1)给可变的字符串赋值一个不可变的值
NSMutableString *str=@"abc";
[str appendString:@"xxx"];
(2)NSMutableString的string属性:会将源对象的所有字符串都覆盖掉(.string属性把原来的内容覆盖了)
NSMutableString *str=[NSMutableString stringWithFormat:@"abc"];
str.string=@"";
[str appendString:@"xxxx"];
NSLog(@"%@",str); //输出xxxx
(3)开发中到底使用NSString还是NSMutableString?
开发中绝大多数用到的是NSString
只是如果需要做特殊处理的时候(截取、拼接、替换)等操作,才考虑使用NSMutableString
(4)位枚举
NSString *s1=@"hello"
; NSRange range=[s1 rangeOfString:@"o" options:0 range:NSMakeRange(0,5)];
如果想使用rangeofString中的range,但是options的条件还不想给它赋值,就可以用0来赋值。这就是位枚举的好处。
- 黑马程序员———Objctive-C———【NSString及NSMutalbeString的使用】
- 黑马程序员———Objctive-C———【NSDictionary、NSMutableDictionary、NSFileManager】
- 黑马程序员———Objctive-C———【NSArray不可变数组、NSMutableArray可变数组】
- 黑马程序员——OC之NSString
- 黑马程序员—Foundation框架之NSString
- 黑马程序员—Foundation框架之NSMutableString及NSString的其它用法
- 黑马程序员——NSString的几种实用方法
- 黑马程序员——OC 基础:NSString的一些用法
- 黑马程序员——NSString类的用法
- 黑马程序员——Foundation框架:结构体及字符串之NSString
- 黑马程序员—Objective-C学习—Foundation—结构体和NSString
- 黑马程序员——Objective-C学习之不可变与可变字符串(NSString\NSMutableString)
- 黑马程序员——Foundation框架——NSString
- 黑马程序员——OC热身——NSString、NSMutableString
- 黑马程序员——ObjectiveC基础——NSString对象
- 黑马程序员14——OC之Fundation(NSString)
- 黑马程序员——Foundation学习之NSString\NSMutableString
- 黑马程序员——OC基础---Foundation之NSString
- nyoj 120 校园网络(入度出度判断)
- ios图像处理第2部分:核心图形,核心图像,GPUImage
- HDU3450_Counting Sequences
- 结构体struct基本使用笔记
- CSS float属性
- 黑马程序员———Objctive-C———【NSString及NSMutalbeString的使用】
- jQuery命名空间,自定义空间及属性,插件开发全解析
- iOS应用程序生命周期&启动周期函数
- 刚刚接触C#
- 如何使用定时器settimeout、setInterval执行能传递参数的函数
- java - (09) Http 和 Soap
- 那么srcset标签和HTML5的picture标签有什么异同?
- GPUImage
- Just for test!