*******这篇文章是在总结NSCharacterSet文章时用到了相关属性,算是那篇文章的一个补充**********
NSRange是Foundation框架中比较常用的一种结构体,用来表示事物的一个范围.通常是字符串里的字符范围或者数组里的元素范围。
typedef struct _NSRange {
NSUInteger location; //表示该范围的起始位置
NSUInteger length; //表示该范围内的长度
} NSRange;
1、NSRange的创建
1.1、通过结构体变量访问成员
NSRange range;
//通过结构体变量访问成员
range.location = 3;
range.length = 2;
2.2、结构体变量整体赋值
NSRange range;
//结构体变量整体赋值
range = (NSRange){5,3};
NSRange r2 = {4,5}; //最简单的
NSRange r3 = {.location = 3,.length = 5};
2.3、NSMakeRange函数(OC中建议使用这种)
NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
NSRange r;
r.location = loc;
r.length = len;
return r;
}
//NSMakeRange函数的作用给 NSRange结构体变量赋值
NSRange r4 = NSMakeRange(3, 3);
//将一个结构体转化成字符串
NSString *str = NSStringFromRange(r4);
2、NSString相关调用方法
//反回aString在调用的字符串的起始点和长度
FOUNDATION_EXPORT NSRange NSRangeFromString(NSString *aString);
//返回一个NSString字符串,起始于range.location,包含range.length长度的字符串
FOUNDATION_EXPORT NSString *NSStringFromRange(NSRange range);
下面的方法使用比较少,暂时放在这里
/* These methods perform string search, looking for the searchString within the receiver string. These return length==0 if the target string is not found. So, to check for containment: ([str rangeOfString:@"target"].length > 0). Note that the length of the range returned by these methods might be different than the length of the target string, due composed characters and such.
Note that the first three methods do not take locale arguments, and perform the search in a non-locale aware fashion, which is not appropriate for user-level searching. To do user-level string searching, use the last method, specifying locale:[NSLocale currentLocale], or better yet, use localizedStandardRangeOfString: or localizedStandardContainsString:.
The range argument specifies the subrange, rather than the whole, of the receiver to use in the search. It is an error to specify a range that is outside of the receiver's bounds, and an exception may be raised.
*/
- (NSRange)rangeOfString:(NSString *)searchString;
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask;
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch;
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch locale:(nullable NSLocale *)locale API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));
这篇文章参考较多,链接如下