http://www.cnblogs.com/pengyingh/articles/2451292.html

当谈到NSString方法时,你会发现很多都涉及到NSRange。不必操心。它事实上仅仅只是是一种C语言结构用来帮助描写叙述一系列的条款,包含一个起点位置和一个计数方法。比如。一个行列通过从还有一个字符串中摘取一个子字符串的方法是非常有效的。你能够对其指定起始位置以及所需的元素数量(以下会向你详细阐述)。

NSRange 定义

关于NSRange的结构。定义例如以下:

typedef struct_NSRange 

{

NSUInteger location;

NSUInteger length;

} NSRange;

location是在行列中的起始位置(基于零点)而length是行列中的条目个数。NSUInteger仅仅是单纯的一个无符号的值,它支持32位和64位系统。

以下是有关它的定义:

#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

NSRange和字符串

这个演示样例告诉了你一个创建行列的方法,通过使用同样的字符串来摘录一个子字符串——输出结果为IPA

NSString *homebrew= @"ImperialIndia Pale Ale (IPA)";

//起始位置为25,获取3个特征值

NSRange range =NSMakeRange (25,3);

//这样的方法相同有效

// NSRange行列为{25, 3}

NSLog (@"Beershortname: %@", [homebrewsubstringWithRange:range]);

假设你想要搜寻一个子字符串,你能够通过下列代码:

NSString *homebrew= @"ImperialIndia Pale Ale (IPA)";

NSRange range = [homebrew rangeOfString:@"IPA"];

// Did we find the string "IPA" ? 我们找到字符串"IPA"了么?

if (range.length> 0)

NSLog(@"Range is: %@", NSStringFromRange(range));

输出结果将显示为:Range is: {25, 3}。当中有一点非常重要,就是指令NSStringFromRange()将显示传回(一个行列)的值作为一个NSString。相同你还能够通过创建一个字符串的行列得到一个NSRangeFromString()功能。

让我们再看还有一个演示样例,下述代码将从字符串的末尾開始向前搜索“ia”字符串:

NSString *homebrew= @"ImperialIndia Pale Ale (IPA)";

//从末尾開始搜索"ia"字符串

NSRange range = [homebrew rangeOfString:@"ia"options:NSBackwardsSearch];

//判别查找到的字符串是否正确

if (range.length> 0)

NSLog(@"Range is: %@", NSStringFromRange(range));

上述结果将显示为:Range is: {12, 2}(“ia”出如今单词“India”中)

NSRange功能

下面就是在处理行列时,可能须要的一些功能:

NSEqualRanges()

NSIntersectionRange()

NSLocationInRange()

NSMakeRange()

NSMaxRange()

NSRangeFromString()

NSStringFromRange()

NSUnionRange()


NSRange and NSString对象的更多相关文章

  1. (转载)OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

    在之前的一篇文章中我们说到了Foundation框架中的NSObject对象,那么今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString. 在OC中 ...

  2. OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

    今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutabl ...

  3. iOS --转载 NSRange 和 NSString 详解

    一.NSRange 1.NSRange的介绍 NSRange是Foundation框架中比较常用的结构体, 它的定义如下: typedef struct _NSRange { NSUInteger l ...

  4. NSString 对象保存在哪? @“xxx”和 stringWithFormat:@"xxx" 区别?

    NSString *str1=@"string";//这种是保存在常量池 NSString *str2=@"string"; NSLog(@"str1 ...

  5. ios7对于NSString对象进行了的变更

    1.instancetype替代id来做返回值的类型.

  6. Foundation框架-NSString和NSMutableString

    可变与不可变的字符串 --1-- Foundation框架介绍 1.1 框架介绍 --2-- NSString 2.1 NSString介绍及使用 2.2 NSString创建方式  2.3 从文件中 ...

  7. iOS基础-NSString及NSMutableString剖析

    一.NSString头文件 NSString : NSObject 实现协议: NSCopying/NSMutableCopying/NSSecureCoding 类别: //扩展类别 NSStrin ...

  8. NSString学习

    基本概念 NSString是以UTF-16 code uint的序列.所有的长度.字符.范围都是以16比特platform-endian(大端序小段序基于平台)的形式表示的. 所以,一个英文字母的长度 ...

  9. OC第二节 —— NSString和NSMutableString

    1.为什么需要NSString对象        答:在OC中创建字符串时,一般不使用C的方法,    因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,    在Cocoa中NSStri ...

随机推荐

  1. 修改docker-toolbox/boot2docker容器镜像

    进入虚拟机 vi /var/lib/boot2docker/profile 编辑在EXTRA_ARGS,加入 --registry-mirror=https://pee6w651.mirror.ali ...

  2. 【转】linux下passwd命令设置修改用户密码

    1.passwd 简单说明: 我们已经学会如何添加用户了,所以我们还要学习设置或修改用户的密码:passwd命令的用法也很多,我们只选如下的几个参数加以说明:想了解更多,请参考man passwd或p ...

  3. C语言标准库头文件

    <assert.h><complex.h><ctype.h><errno.h><fenv.h><float.h><intt ...

  4. Android开发笔记(5)——方法调用(基础)

    转载请注明——博客园igoslly:http://www.cnblogs.com/igoslly/p/6833544.html   在实际方法调用中,程序按顺序逐句执行,直到“}”结束. 为避免程序大 ...

  5. CSS——text-indent

    在h1标签里套入a标签并写上文字,有利于seo,但是文字如何隐藏呢?一般都是a标签变成内联块并首行缩进为负值. <!DOCTYPE html> <html lang="en ...

  6. android studio 控件提示大写

    方法一: 在第一行找到File进入找到setting,找到code completion 右侧复选框 选择-->None—->ok 方法二:<item name="andr ...

  7. python2升级成python3

    系统环境centos 6.5原python版本2.6.6目标python版本3.5.11.下载python3.5wget --no-check-certificate  http://www.pyth ...

  8. 8、scala面向对象编程之对象

    1.  Object 2.伴生对象 3.让object继承抽象类 4.apply方法 5.main方法 6.用object实现枚举功能 1.  Object Object,相当于class的单个实例, ...

  9. [文章转载]-我的Java后端书架-江南白衣

    我的Java后端书架 (2016年暮春3.0版) 04月 24, 2016 | Filed under 技术 书架主要针对Java后端开发. 3.0版把一些后来买的.看的书添补进来,又或删掉或降级一些 ...

  10. antiSMASH数据库:微生物次生代谢物合成基因组簇查询和预测

    2017年4月28日,核酸研究(Nucleic Acids Research)杂志上,在线公布了一个可搜索微生物次生代谢物合成基因组簇的综合性数据库antiSMASH数据库 4.0版,前3版年均引用2 ...