NSRange类详解
以前学习打的时候竟然漏掉了NSRange
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
typedef unsigned long NSUInteger;
#else
typedef unsigned int NSUInteger;
#endif
例子:
下面这个例子,将输出IPA
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
// Starting at position 25, get 3 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 the end 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个元素的子集。
转载http://3426724.blog.51cto.com/3416724/634188
转载于:https://www.cnblogs.com/ioschen/p/3297579.html
NSRange类详解相关推荐
- OpenCV Mat类详解和用法(官网原文)
参考文章:OpenCV Mat类详解和用法 我马克一下,日后更 官网原文链接:https://docs.opencv.org/3.2.0/d6/d6d/tutorial_mat_the_basic_i ...
- 转载:c+string类详解
C++ string 类详解 </h1><div class="clear"></div><div class="postBod ...
- JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】
黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...
- JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】
黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...
- Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】
目 录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...
- Java中的Runtime类详解
Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...
- [NewLife.XCode]实体类详解
NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...
- basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解
Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中"获得连接"或"释放资源 ...
- JAVA的StringBuffer类详解
JAVA的StringBuffer类详解 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer ...
- OpenCV参考手册之Mat类详解
OpenCV参考手册之Mat类详解(一) OpenCV参考手册之Mat类详解(二) OpenCV参考手册之Mat类详解(三)
最新文章
- 高斯旋转热源与双椭球热源_电力分公司:多措并举保证供暖质量效益双提升
- Linux 下使用 Sar 简介
- desktop docker 无法卸载_docker,生信人的福音!
- Java读写二进制文件
- 省选模拟赛记录(越往下越新哦~~~)
- 腾讯天衍实验室新算法入选国际万维网大会 新冠疫苗AI问答上线
- C#反射的Assembly的简单应用
- Hyper-V Windows 8.1 Windows Server 2012 R2 QA
- cropper裁切图片并预览上传(1)
- Java嗖嗖移动项目
- airtest上的滑动操作swipe
- 浅谈市场降温后的区块链发展前景
- Python:PIL库中getpixel()-方法的使用
- matlab学习—分段函数计算
- 大数据初创企业Concurrent获千万美元融资
- matlab公式上为什么会有问号,MathType公式显示问号怎么解决
- 谈谈传递闭包以及自己杂想
- Java中内存溢出和内存泄露详解
- 开关稳压电源的晶体管
- 跳槽字节跳动,十年开发经验Android架构师,灵魂拷问
热门文章
- mysql基础之数据库备份和恢复实操
- Linux服务之DNS服务篇
- OpenOffice的安装与启动2
- VS2010与.NET4系列 6.ASP.NET,HTML,JavaScript片断支持
- [翻译] 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
- js保留n位小数——toFiexed()
- github 远程仓库操作
- Python for Infomatics 第12章 网络编程四(译)
- 日常---区域赛临近
- 根据ip地址查找本地时区