iOS之NSRange的使用
2015-01-19 15:46
375 查看
转载自:http://www.cnblogs.com/csj007523/archive/2012/07/15/2592302.html
今天记录一下学习Cocoa里有关里的Foundation框架。
1.首先Cocoa是由两个不同的框架组成的:Foundation Kit和Application Kit,而Application Kit包含了所有的用户接口对象和高级类,Foundation框架中则有很多有用的,面向数据的低级类和数据类型。
2.范围的作用,看看一下结构体:
[plain] view
plaincopy
typedef struct _NSRange {
unsigned int location;
unsigned int length;
}NSRange;//其中location表示字段存放该范围的起始位置,length表示是该范围内所含元素的个数。
例如:字符串”Objective-C is a cool language“中,单词”cool“可以用loaction为17,length为4的范围来表示。也许由于Locatio字段未被初始化,所以它 的值可以是NSNotFound,用来表示无意义范围。
可以用3种方式创建新的NSRange:
[plain] view
plaincopy
(1)直接给字段赋值
NSRange range:
range.location = 17;
range.length = 4;
(2)应用C的聚合结构赋值机制
NSRange range = {17,4};
(3)使用Cocoa提供的一个快捷函数NSMakeRange();
NSRange range = NSMakeRange(17,4);
3.几何数据类型:
[plain] view
plaincopy
(1) NSPoint和NSSize,首先看看它们的结构体:
typedef struct _NSPoint{
float x ;
float y;
}NSPoint;
typedef struct _NSSize{
float width;
float height;
}NSSIze;
(2)矩形类型NSRect
typedef struct _NSRect{
NSPoint origin;
NSSize size;
}NSRect;
(3)它们也一样有:创建数据类型的快捷函数,NSMakePoint(),NSMakeSize()和NSMakeRect().
4.字符串类型操作:
[plain] view
plaincopy
[plain] view
plaincopy
(1)创建字符串,除了直接赋值创建NSString字符串外,还可以通过:stringWithFormat方法来通过
格式字符串和参数创建NSString的
+(id) stringWithFormat : (NSString *)format, .........例子如下:
NSString *height;
height = [NSString stringWithFormat : @"Your height is %d feet,%d inches",5,11];
得到的字符串是“Your height is 5 feet, 11inches”.
这里需要注意的地方有两个,第一就是这个方法后面的省略号,表示这个方法可以接收多个以逗
号隔开的其他参数,第二就是方法声明的开头是一个+号,它代表创建该类的类对象,我们把这
种方法叫做“工厂方法”。
(2)获得字符串大小:length,使用方法如下
unsigned int length = [height length];
此方法可以准确无误地处理国际字符串。如俄文,中文,日文等。
(3)NSString字符串比较操作:
1.-(BOOL) isEqualToString: (NSString *)aString; 使用如下
NSString *thing1 = @“hello 2”;
NSString *thing2 ;
thing2 = [NSString stringWithFormat : @"hello %d",5 ];
if ([thing1 isEqualToString : thing2]){
NSLog(@"They are the same!");
}//注意此方法是比较字符串指针向的值,而“==”比较的是指针值。
2.-(NSComparisonResult)compare : (NSString *)string;
用法如下,首先先看看NSComparisonResult结构体:
typedef enum _NSComparisonResult{
NSOrderedAscending = -1;
NSOrderedSame,
NSOrderedDEscending
}NSComparisonResult;
例子:[@"zoinks" compare : @"jinies"]将会返回NSOrderedDescending
(表示左侧的字符在右侧字符的后面)
3.-(NSComparisonResult) compare : (NSString *)string
options : (unsigned)mask;
options参数是一个位掩码,你可以使用位或运算符来添加选项标记。例子如下:
if( [ thing1 compare : thing2
options : NSCaseInsensitiveSearch | NSNumericSearch ]
== NSOrderedSame)
{ NSLog (@"They match!") ; }
(4)字符串内是否包含别的字符串
1 .-(BOOL)hasPrefix:(NSString *)aString;//检查字符串是否以另一个字符串开头
-(BOOL)hasSuffix:(NSString *)aString;//检查字符串是否以另一个字符串结尾
-(NSRange)rangeOfString: (NSString *)aString ;//将rangeOfString:发送给一个
NSString对象时,传递的参数是要查找的字符串,它会返回一个NSRange struct 来告诉你
与这个字符串相匹配的 部分在哪里以及能够匹配上的字符串个数。
例子:NSRange range;
NSString *filename = @"draft-chapter.pages";
range = [fileName rangeOfString : @"chapter"];
返回的range.start为6,range.length为7.如果传递的参数在接收字符串中没有找到,那
range.start则等于NSNotFound。
5.可变性,NSString是不可变的,这并不意味着你不能操作它们。Cocoa提供了一个NSString的子类,叫做NSMutableString(可以改变的字符串)
[plain] view
plaincopy
[plain] view
plaincopy
(1)-(id)stringWithCapacity: (unsigned)capacity; //注意这个容量只是给NSMutableString的一个建议。
例子:string = [NSMutableString stringWithCapcity : 42];
(2)有了一个可变的字符串,那就可以对它执行各种操作了:
1.-(void)appendString : (NSString *)aString;
2.-(void)appendFormat : (NSString *)format , ......;
例子:NSMutableString *string;
string = [NSMutableString stringWithCapacity: 50];
[ string appendString : @"Hello there"];
[ string appendFormat : @"human %d!",39 ];
这段代码的运行结果是string被赋值为“Hello there human 39!”
3.-(void)deleteCharactersInRange : (NSRange) range;
我们经常会把deleteCharactersInRange:和rangeOfString:连在一起使用,例子:
NSMuableString *friends;
friends = [ NSMutableString stringWithCapacity: 50];
[ friends appendString : @"JAmes BethLynn Jack Evan" ];
接下来,找到JAck的字符范围:
NSRange jackRange;
jackRange = [friends rangeOfString: @"Jack"];
jackRange.length++;//这句的意思是,把后面的空格也算上。
[ friends deleteCharactersInRange : jackRange ];
结果为:“James BethLynn Evan”
好了,今天就写到这里,继续会有更新,转载请注明:http://blog.csdn.net/yuzhiboyi
1)componentsSeparatedByString:截取指定字符串;
2) pathForResource:获取程序运行时目录
3) objectAtIndex:获取当前索引的字符串;
4) rangeOfString:获取指定短字符串在长字符串中的开始,结尾索引值;
5) stringWithContentsOfFile:按行读取文件
6) componentsSeparatedByString:@"\n"];换行分割字符串;
7) NSEnumerator *nse = [lines objectEnumerator];
将数组转换为NSEnumerator,可向前读取数据;
8) nextObject:读取下一行数据;
void splitString(){
NSString *animals = @"dog#cat#pig";
//将#分隔的字符串转换成数组
NSArray *array = [animals componentsSeparatedByString:@"#"];
NSLog(@"animals:%@",array);
//获取程序运行时目录
NSString *escapedPath = [[NSBundle mainBundle] pathForResource:@"info" ofType:@"plist"];
NSArray *strings = [escapedPath componentsSeparatedByString: @"/"];
NSString *tmpFilename = [strings objectAtIndex:[strings count]-1];
NSRange iStart = [escapedPath rangeOfString :
tmpFilename];
NSString *runtimeDirectory = [escapedPath substringToIndex:iStart.location-1];
NSLog(@"runtimeDirectory:%@",runtimeDirectory);
//按行读取文件
NSString *tmp;
NSArray *lines = [[NSString stringWithContentsOfFile:@"test.txt" encoding:nil error:nil]
componentsSeparatedByString:@"\n"];
NSEnumerator *nse = [lines objectEnumerator];
while(tmp = [nse nextObject])
{
NSLog(@"tmp:%@",
tmp);
}
}
今天记录一下学习Cocoa里有关里的Foundation框架。
1.首先Cocoa是由两个不同的框架组成的:Foundation Kit和Application Kit,而Application Kit包含了所有的用户接口对象和高级类,Foundation框架中则有很多有用的,面向数据的低级类和数据类型。
2.范围的作用,看看一下结构体:
[plain] view
plaincopy
typedef struct _NSRange {
unsigned int location;
unsigned int length;
}NSRange;//其中location表示字段存放该范围的起始位置,length表示是该范围内所含元素的个数。
例如:字符串”Objective-C is a cool language“中,单词”cool“可以用loaction为17,length为4的范围来表示。也许由于Locatio字段未被初始化,所以它 的值可以是NSNotFound,用来表示无意义范围。
可以用3种方式创建新的NSRange:
[plain] view
plaincopy
(1)直接给字段赋值
NSRange range:
range.location = 17;
range.length = 4;
(2)应用C的聚合结构赋值机制
NSRange range = {17,4};
(3)使用Cocoa提供的一个快捷函数NSMakeRange();
NSRange range = NSMakeRange(17,4);
3.几何数据类型:
[plain] view
plaincopy
(1) NSPoint和NSSize,首先看看它们的结构体:
typedef struct _NSPoint{
float x ;
float y;
}NSPoint;
typedef struct _NSSize{
float width;
float height;
}NSSIze;
(2)矩形类型NSRect
typedef struct _NSRect{
NSPoint origin;
NSSize size;
}NSRect;
(3)它们也一样有:创建数据类型的快捷函数,NSMakePoint(),NSMakeSize()和NSMakeRect().
4.字符串类型操作:
[plain] view
plaincopy
[plain] view
plaincopy
(1)创建字符串,除了直接赋值创建NSString字符串外,还可以通过:stringWithFormat方法来通过
格式字符串和参数创建NSString的
+(id) stringWithFormat : (NSString *)format, .........例子如下:
NSString *height;
height = [NSString stringWithFormat : @"Your height is %d feet,%d inches",5,11];
得到的字符串是“Your height is 5 feet, 11inches”.
这里需要注意的地方有两个,第一就是这个方法后面的省略号,表示这个方法可以接收多个以逗
号隔开的其他参数,第二就是方法声明的开头是一个+号,它代表创建该类的类对象,我们把这
种方法叫做“工厂方法”。
(2)获得字符串大小:length,使用方法如下
unsigned int length = [height length];
此方法可以准确无误地处理国际字符串。如俄文,中文,日文等。
(3)NSString字符串比较操作:
1.-(BOOL) isEqualToString: (NSString *)aString; 使用如下
NSString *thing1 = @“hello 2”;
NSString *thing2 ;
thing2 = [NSString stringWithFormat : @"hello %d",5 ];
if ([thing1 isEqualToString : thing2]){
NSLog(@"They are the same!");
}//注意此方法是比较字符串指针向的值,而“==”比较的是指针值。
2.-(NSComparisonResult)compare : (NSString *)string;
用法如下,首先先看看NSComparisonResult结构体:
typedef enum _NSComparisonResult{
NSOrderedAscending = -1;
NSOrderedSame,
NSOrderedDEscending
}NSComparisonResult;
例子:[@"zoinks" compare : @"jinies"]将会返回NSOrderedDescending
(表示左侧的字符在右侧字符的后面)
3.-(NSComparisonResult) compare : (NSString *)string
options : (unsigned)mask;
options参数是一个位掩码,你可以使用位或运算符来添加选项标记。例子如下:
if( [ thing1 compare : thing2
options : NSCaseInsensitiveSearch | NSNumericSearch ]
== NSOrderedSame)
{ NSLog (@"They match!") ; }
(4)字符串内是否包含别的字符串
1 .-(BOOL)hasPrefix:(NSString *)aString;//检查字符串是否以另一个字符串开头
-(BOOL)hasSuffix:(NSString *)aString;//检查字符串是否以另一个字符串结尾
-(NSRange)rangeOfString: (NSString *)aString ;//将rangeOfString:发送给一个
NSString对象时,传递的参数是要查找的字符串,它会返回一个NSRange struct 来告诉你
与这个字符串相匹配的 部分在哪里以及能够匹配上的字符串个数。
例子:NSRange range;
NSString *filename = @"draft-chapter.pages";
range = [fileName rangeOfString : @"chapter"];
返回的range.start为6,range.length为7.如果传递的参数在接收字符串中没有找到,那
range.start则等于NSNotFound。
5.可变性,NSString是不可变的,这并不意味着你不能操作它们。Cocoa提供了一个NSString的子类,叫做NSMutableString(可以改变的字符串)
[plain] view
plaincopy
[plain] view
plaincopy
(1)-(id)stringWithCapacity: (unsigned)capacity; //注意这个容量只是给NSMutableString的一个建议。
例子:string = [NSMutableString stringWithCapcity : 42];
(2)有了一个可变的字符串,那就可以对它执行各种操作了:
1.-(void)appendString : (NSString *)aString;
2.-(void)appendFormat : (NSString *)format , ......;
例子:NSMutableString *string;
string = [NSMutableString stringWithCapacity: 50];
[ string appendString : @"Hello there"];
[ string appendFormat : @"human %d!",39 ];
这段代码的运行结果是string被赋值为“Hello there human 39!”
3.-(void)deleteCharactersInRange : (NSRange) range;
我们经常会把deleteCharactersInRange:和rangeOfString:连在一起使用,例子:
NSMuableString *friends;
friends = [ NSMutableString stringWithCapacity: 50];
[ friends appendString : @"JAmes BethLynn Jack Evan" ];
接下来,找到JAck的字符范围:
NSRange jackRange;
jackRange = [friends rangeOfString: @"Jack"];
jackRange.length++;//这句的意思是,把后面的空格也算上。
[ friends deleteCharactersInRange : jackRange ];
结果为:“James BethLynn Evan”
好了,今天就写到这里,继续会有更新,转载请注明:http://blog.csdn.net/yuzhiboyi
1)componentsSeparatedByString:截取指定字符串;
2) pathForResource:获取程序运行时目录
3) objectAtIndex:获取当前索引的字符串;
4) rangeOfString:获取指定短字符串在长字符串中的开始,结尾索引值;
5) stringWithContentsOfFile:按行读取文件
6) componentsSeparatedByString:@"\n"];换行分割字符串;
7) NSEnumerator *nse = [lines objectEnumerator];
将数组转换为NSEnumerator,可向前读取数据;
8) nextObject:读取下一行数据;
void splitString(){
NSString *animals = @"dog#cat#pig";
//将#分隔的字符串转换成数组
NSArray *array = [animals componentsSeparatedByString:@"#"];
NSLog(@"animals:%@",array);
//获取程序运行时目录
NSString *escapedPath = [[NSBundle mainBundle] pathForResource:@"info" ofType:@"plist"];
NSArray *strings = [escapedPath componentsSeparatedByString: @"/"];
NSString *tmpFilename = [strings objectAtIndex:[strings count]-1];
NSRange iStart = [escapedPath rangeOfString :
tmpFilename];
NSString *runtimeDirectory = [escapedPath substringToIndex:iStart.location-1];
NSLog(@"runtimeDirectory:%@",runtimeDirectory);
//按行读取文件
NSString *tmp;
NSArray *lines = [[NSString stringWithContentsOfFile:@"test.txt" encoding:nil error:nil]
componentsSeparatedByString:@"\n"];
NSEnumerator *nse = [lines objectEnumerator];
while(tmp = [nse nextObject])
{
NSLog(@"tmp:%@",
tmp);
}
}
相关文章推荐
- iOS开发学习专题-基础知识(一)NSString NSMutableString NSRange NSNotFound详细使用方式
- 使用 tftpdnld命令恢复路由器的ios
- 【转帖】免费在ios开发中使用顶级3d游戏引擎 — 虚幻三引擎
- 成功使用ArcGIS API for iOS加载Google地图
- iOS中使用RegexKitLite来试用正则表达式
- ios简单使用core data
- 如何在iOS中使用Block
- iOS使用静态链接库(基础篇)
- ArcGIS API for iOS开发教程四 使用GraphicsLayer
- IOS恢复备份使用帮助
- NA-NP-IE系列实验4:CLI 的使用与IOS 基本命令(1)
- 在 iOS 应用中使用 GPS
- iOS - 使用ZoomingViewController来放大UIView至全屏
- iOS_MJRefrash的详解以及使用
- rommon模式下使用TFTP修复IOS故障
- ios简单使用sqlite3
- 使用instrument检测ios程序内存问题