NSRange类详解 以及stringByReplacingCharactersInRange: withString: 實現字符串删除,替换
2015-11-29 13:17
411 查看
NSRange的定义
typedef struct _NSRange
{
NSUInteger location;
NSUInteger length;
} NSRange;
NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度。他们都是NSUInteger类型。而NSUInteger类型的定义如下:
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedefunsigned long NSUInteger;
#else
typedef unsigned int NSUInteger;
#endif
例子:
下面这个例子,将输出IPA
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
// Starting at position 25, get3 characters
NSRange range=NSMakeRange (25, 3);
// This would also work:
// NSRange range = {25, 3};
NSLog (@"Beer shortname: %@", [homebrew substringWithRange:range]);
搜索字符串:
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
NSRange range = [homebrew rangeOfString:@"IPA"];
// Did we find the string "IPA" ?
if (range.length > 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
上面的程序将输出Range is: {25, 3}。NSStringFromRange()方法,将一个NSRange返回一个NSString。而另外一个函数NSRangeFromString()则是将NSString转换为NSRange
下面这个例子将从后向前反向搜索字符串:
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
// Search for the "ia" starting at theend of string
NSRange range = [homebrew rangeOfString:@"ia" options:NSBackwardsSearch];
// What did we find
if (range.length > 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
上面的程序将输出:Range
is: {12, 2} (“ia”出现在单词“India”中)
ac
如果你要获取一个字符串或者一个数组中的一个子集,那么使用NSRange会很方便的定义这个子集。
NSRange定义
Declaration: typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
创建NSRange的方法定义
Declaration: NSRange NSMakeRange (
NSUInteger loc,
NSUInteger len
);
例如获取一个数组的一个子集:
NSRange range =
NSMakeRange(0, 5);
NSArray *subArray = [self.states subarrayWithRange:range];
这样就获得了这个数组中0开始的5个元素的子集。
NSString *str = @"1234567890";
[str stringByReplacingCharactersInRange:NSMakeRange(str.length-1, 1) withString:@""];
NSLog(@"str = %@", str); // str = 123456789
[str stringByReplacingCharactersInRange:NSMakeRange(str.length-1, 1) withString:@"1"];
解释:NSMakeRange(str.length-1, 1),将字符串str定位到第九个字符即‘9’,取长度为1的字符串,即9后第一个字符串 ‘0’,用字符串@“”替代‘0’,即所得的结果为“123456789”
NSString *str = @"1234567890";
[str stringByReplacingCharactersInRange:NSMakeRange(str.length-2, 2) withString:@"aa"];
NSLog(@"str = %@", str); // str = 12345678aa
typedef struct _NSRange
{
NSUInteger location;
NSUInteger length;
} NSRange;
NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度。他们都是NSUInteger类型。而NSUInteger类型的定义如下:
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedefunsigned long NSUInteger;
#else
typedef unsigned int NSUInteger;
#endif
例子:
下面这个例子,将输出IPA
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
// Starting at position 25, get3 characters
NSRange range=NSMakeRange (25, 3);
// This would also work:
// NSRange range = {25, 3};
NSLog (@"Beer shortname: %@", [homebrew substringWithRange:range]);
搜索字符串:
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
NSRange range = [homebrew rangeOfString:@"IPA"];
// Did we find the string "IPA" ?
if (range.length > 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
上面的程序将输出Range is: {25, 3}。NSStringFromRange()方法,将一个NSRange返回一个NSString。而另外一个函数NSRangeFromString()则是将NSString转换为NSRange
下面这个例子将从后向前反向搜索字符串:
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
// Search for the "ia" starting at theend of string
NSRange range = [homebrew rangeOfString:@"ia" options:NSBackwardsSearch];
// What did we find
if (range.length > 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
上面的程序将输出:Range
is: {12, 2} (“ia”出现在单词“India”中)
ac
如果你要获取一个字符串或者一个数组中的一个子集,那么使用NSRange会很方便的定义这个子集。
NSRange定义
Declaration: typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
创建NSRange的方法定义
Declaration: NSRange NSMakeRange (
NSUInteger loc,
NSUInteger len
);
例如获取一个数组的一个子集:
NSRange range =
NSMakeRange(0, 5);
NSArray *subArray = [self.states subarrayWithRange:range];
这样就获得了这个数组中0开始的5个元素的子集。
NSString *str = @"1234567890";
[str stringByReplacingCharactersInRange:NSMakeRange(str.length-1, 1) withString:@""];
NSLog(@"str = %@", str); // str = 123456789
[str stringByReplacingCharactersInRange:NSMakeRange(str.length-1, 1) withString:@"1"];
解释:NSMakeRange(str.length-1, 1),将字符串str定位到第九个字符即‘9’,取长度为1的字符串,即9后第一个字符串 ‘0’,用字符串@“”替代‘0’,即所得的结果为“123456789”
NSString *str = @"1234567890";
[str stringByReplacingCharactersInRange:NSMakeRange(str.length-2, 2) withString:@"aa"];
NSLog(@"str = %@", str); // str = 12345678aa
相关文章推荐
- Thread类的应用
- Linux系统的目录结构介绍
- iOS多线程编程-GCD
- SQL 循环修改数据库编号
- oracle 11g角色管理
- django开发要点-URL的配置2,在urlconf中增加参数
- Android开发 NDK编程
- 图解集合1:ArrayList
- OpenGL(一)之配置篇
- 数据库 关系代数 投影概念理解
- jfinal框架下使用c3P0连接池连接sql server 2008
- c/c++进制转换
- Activity之间的跳转(Activity和intent)
- 普通方法验证 邮箱正确性
- mysql支持的数据类型简介
- C++的chrono、ratio和ctime等头文件
- Java - 认识 JDBC
- 直接跳转到appStore
- .**信息安全系统设计基础第十二周学习总结
- 大话设计模式之面向对象基础篇(三)