四十八、基础框架(六)不可修改字符串2-其它基本字符串操作
2012-10-28 16:24
363 查看
下面的程序 示范了 其它处理字符串的方法。比如 从一个字符串当中 提取 另一个字符串,找出 一个字符串在另外一个字符串中的位置。
某些措施 要求 你 提供 一个特定的范围。范围 包含了 你需要的字符串 在某个字符串中的位置、长度。比如,从第0个字符开始的3个字符的范围 就是 {0,3}。一些适用于NSString这类物件(或者 其它基础框架内的物件类型)的措施 会要求 你 用 一种特殊的数据类型 来表示范围,那 就是 NSRange。NSRange 事实上 是 一种组织,这种组织 包含了 位置 和 长度这两个成员。
运行 这个程序后,可以得到 下面的结果:
substringToIndex:n这项措施 会 将 其实施对象中 前n个字符 提取出来,但是 并不包括 第n个字符。由于 字符串 总是 从第0个字符 开始,所以 如果 这项措施附带的参数 为 3,那么 这项措施 就会 提取出 第0个、第1个 和 第2个字符。对于 任何附带下标的字符串措施来说,如果 你 提供 无效的参数,那么 你 就会得到 ”Range or index out of bounds”这个错误信息。
substringToIndex:n这项措施 会 将 其实施对象中 第n个字符后的字符 提取出来,但是 并不包括 第n个字符。
这行语句 示范了 如何 将 substringFromIndex: 和 substringToIndex:这两项措施 结合起来,将 某个字符串中 特定范围中的字符 提取出来。其中 substringFromIndex:这项措施 将 字符串string1中 第8个字符后面的字符 提取出来。接着 substringToIndex:这项措施 将 字符串string1中 第8个字符后面的字符中 前6个字符 提取出来。最后的结果 在原字符串中的范围 就是 {8,6},也就是 位置 为 8,长度 为 6。而 substringWithRange:这项措施 将 上面两个步骤 结合成了 一个步骤。
这个特殊的函数 创建出 一个从8开始,长度为6的范围。这个范围 会当作 substringWithRange:这项措施的参数。
rangeOfString:这项措施 可以用来 确定 在一个字符串当中 某个特定的字符串的位置。如果 这个特定的字符串 找到了,那么 这项措施 就会产生 一个NSRange类型的数据;如果 没有找到,这项措施 也会产生 一个NSRange类型的数据,不过 这个数据中的成员location的值 为 NSNotFound。
这行语句 刚好 办到了 上面提到的事。注意:subRange 并不是 一个物件,而 是 一个组织、一个结构体。你 也可以看到 创建 subRange这个组织时,并没有 使用 星号。
某些措施 要求 你 提供 一个特定的范围。范围 包含了 你需要的字符串 在某个字符串中的位置、长度。比如,从第0个字符开始的3个字符的范围 就是 {0,3}。一些适用于NSString这类物件(或者 其它基础框架内的物件类型)的措施 会要求 你 用 一种特殊的数据类型 来表示范围,那 就是 NSRange。NSRange 事实上 是 一种组织,这种组织 包含了 位置 和 长度这两个成员。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | #import <Foundation/NSObject.h>#import <Foundation/NSString.h>#import <Foundation/NSAutoreleasePool.h>int main (int argc, const char * argv[]){ NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; NSString *string1=@"I'm String One."; NSString *string2=@"I'm String Two."; NSString *result; NSRange subRange; //从字符串中提取前3个字符 result=[string1 substringToIndex:3]; NSLog(@"字符串string1的前三个字符为:%@",result); //从字符串中提取第5个后面的字符 result=[string1 substringFromIndex:5]; NSLog(@"字符串string1的第5后面的字符为:%@",result); //从字符串中提取第8个、第13个及中间的字符 result=[[string1 substringFromIndex:8] substringToIndex:6]; NSLog(@"第8个、第13个及其中间的字符为:%@",result); //一个更简单的办法 result=[string1 substringWithRange:NSMakeRange(8,6)]; NSLog(@"第8个、第13个及其中间的字符为:%@",result); //确定一个字符串在另外一个字符串中的位置 subRange=[string1 rangeOfString:@"String One"]; NSLog(@"字符串“String One”位置为:%lu,长度为:%lu。",subRange.location,subRange.length); subRange=[string1 rangeOfString:@"String Two"]; if(subRange.location==NSNotFound) { NSLog(@"字符串“String Two”没有找到。"); } else { NSLog(@"字符串“String Two”位置为:%lu,长度为:%lu。",subRange.location,subRange.length); } [pool drain]; return 0;} |
1 2 3 4 5 6 | 2012-04-09 17:07:21.953 Sample[804:707] 字符串string1的前三个字符为:I'm 2012-04-09 17:07:21.955 Sample[804:707] 字符串string1的第5个符为:tring One. 2012-04-09 17:07:21.960 Sample[804:707] 第8个、第13个及其中间的字符为:ng One 2012-04-09 17:07:21.960 Sample[804:707] 第8个、第13个及其中间的字符为:ng One 2012-04-09 17:07:21.962 Sample[804:707] 字符串“String One”位置为:4,长度为:10。 2012-04-09 17:07:21.962 Sample[804:707] 字符串“String Two”没有找到。 |
substringToIndex:n这项措施 会 将 其实施对象中 第n个字符后的字符 提取出来,但是 并不包括 第n个字符。
1 | result=[[string1 substringFromIndex:8] substringToIndex:6]; |
1 | NSMakeRange(8,6) |
rangeOfString:这项措施 可以用来 确定 在一个字符串当中 某个特定的字符串的位置。如果 这个特定的字符串 找到了,那么 这项措施 就会产生 一个NSRange类型的数据;如果 没有找到,这项措施 也会产生 一个NSRange类型的数据,不过 这个数据中的成员location的值 为 NSNotFound。
1 | subRange=[string1rangeOfString:@"String Two"]; |
相关文章推荐
- 四十七、基础框架(五)不可修改字符串1
- 不可变字符串对象的创建及其基本操作
- Python基础教程代码与注释P44 3.1 基本字符串操作 3.2 字符串格式化:精简版
- Java SE 基础常用API-字符串基本操作思维导图
- python基础--字符串基本操作
- Ibatis 框架的基本介绍及基础操作
- 六十四、基础框架(二十二)文件操作-基本文件操作
- Java基础知识强化之集合框架笔记77:ConcurrentHashMap之 ConcurrentHashMap的基本操作
- 四十九、基础框架(七)可修改字符串
- 菜鸟的Python之路--基础知识(字符串的基本操作)
- Python基础教程 基本的数值操作,字符串操作。
- python基础知识 (7) ----- 字符串的基本操作
- 线程基础:线程(2)——JAVA中的基本线程操作(上)
- MVC3 基本业务开发框架 0.7.20110614 完整的登录+注销+修改密码+灰度空间主题(2011-06-16 添加辉光效果)
- vector基本操作|随机生成乱序字符串
- Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例
- MySQL基础(一):基本操作
- objective-c 编程基础(3.4 Foundation框架之字符串)
- Flask中之数据库框架和模型类四:再述SQLAlchemy配置,表的操作和基本操作之增删改查
- 字符串的基本操作