NSRange and NSString对象
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()