以前学习打的时候竟然漏掉了NSRange

NSRange的定义

typedef struct _NSRange

{

NSUInteger location;

NSUInteger length;

} NSRange;

NSRange是一个结构体,其location是一个以0为开始的indexlength是表示对象的长度。他们都是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类详解相关推荐

  1. OpenCV Mat类详解和用法(官网原文)

    参考文章:OpenCV Mat类详解和用法 我马克一下,日后更 官网原文链接:https://docs.opencv.org/3.2.0/d6/d6d/tutorial_mat_the_basic_i ...

  2. 转载:c+string类详解

    C++ string 类详解 </h1><div class="clear"></div><div class="postBod ...

  3. JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  4. JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  5. Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】

    目   录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...

  6. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  7. [NewLife.XCode]实体类详解

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  8. basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中"获得连接"或"释放资源 ...

  9. JAVA的StringBuffer类详解

    JAVA的StringBuffer类详解 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer ...

  10. OpenCV参考手册之Mat类详解

    OpenCV参考手册之Mat类详解(一) OpenCV参考手册之Mat类详解(二) OpenCV参考手册之Mat类详解(三)

最新文章

  1. 高斯旋转热源与双椭球热源_电力分公司:多措并举保证供暖质量效益双提升
  2. Linux 下使用 Sar 简介
  3. desktop docker 无法卸载_docker,生信人的福音!
  4. Java读写二进制文件
  5. 省选模拟赛记录(越往下越新哦~~~)
  6. 腾讯天衍实验室新算法入选国际万维网大会 新冠疫苗AI问答上线
  7. C#反射的Assembly的简单应用
  8. Hyper-V Windows 8.1 Windows Server 2012 R2 QA
  9. cropper裁切图片并预览上传(1)
  10. Java嗖嗖移动项目
  11. airtest上的滑动操作swipe
  12. 浅谈市场降温后的区块链发展前景
  13. Python:PIL库中getpixel()-方法的使用
  14. matlab学习—分段函数计算
  15. 大数据初创企业Concurrent获千万美元融资
  16. matlab公式上为什么会有问号,MathType公式显示问号怎么解决
  17. 谈谈传递闭包以及自己杂想
  18. Java中内存溢出和内存泄露详解
  19. 开关稳压电源的晶体管
  20. 跳槽字节跳动,十年开发经验Android架构师,灵魂拷问

热门文章

  1. mysql基础之数据库备份和恢复实操
  2. Linux服务之DNS服务篇
  3. OpenOffice的安装与启动2
  4. VS2010与.NET4系列 6.ASP.NET,HTML,JavaScript片断支持
  5. [翻译] 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
  6. js保留n位小数——toFiexed()
  7. github 远程仓库操作
  8. Python for Infomatics 第12章 网络编程四(译)
  9. 日常---区域赛临近
  10. 根据ip地址查找本地时区