#import <Foundation/Foundation.h> void print_range(NSRange range); void print_range(NSRange range) { if(range.location != NSNotFound) NSLog(@"range is %@", NSStringFromRange(range)); // NSStringFromRange else NSLog(@"range.location not found."); } int main (int argc, const char * argv[]) { @autoreleasepool { // 各种初始化方法 NSRange range1; // 分别赋值 range1.location = 18; range1.length = 20; print_range(range1); // 结构初始化方法 NSRange range2 = {20, 40}; print_range(range2); // 调用辅助的build函数 NSRange range3 = NSMakeRange(30, 60); print_range(range3); // 暂时没有确定的有意义的值,可以设置成NSNotFound NSRange range4 = {NSNotFound, NSNotFound}; print_range(range4); // 截取部分字符串 NSString *str = @"that is a dog."; NSLog(@"it's a %@", [str substringWithRange:NSMakeRange(10, 3)]); // 返回部分字符串的位置信息 NSRange range = [str rangeOfString:@"dog"]; if(range.length > 0) print_range(range); // 反响查找 range = [str rangeOfString:@"a" options:NSBackwardsSearch]; if(range.length > 0) print_range(range); // 从字符串构建NSRange结构体 NSLog(@"it's a %@", [str substringWithRange:NSRangeFromString(@"{10, 3}")]); // NSRangeFromString // 截取数组的部分元素 NSArray *words = [NSArray arrayWithObjects:@"one", @"two", @"three", @"four", @"five", nil]; NSArray *subWords = [words subarrayWithRange:NSMakeRange(2, 2)]; for (NSString *w in subWords) NSLog(@"%@", w); // 判断值是否相等 NSRange rangeOne = NSMakeRange(1, 10); NSRange rangeTwo = NSMakeRange(1, 10); if(NSEqualRanges(rangeOne, rangeTwo)) NSLog(@"rangeOne is equal to rangeTwo"); // range is {3, 3} NSRange intersectionRange = NSIntersectionRange(NSMakeRange(1, 5), NSMakeRange(3, 8)); print_range(intersectionRange); if(NSLocationInRange(8, NSMakeRange(5, 20))) NSLog(@"8 in {1, 20}"); if(NSMaxRange(NSMakeRange(3, 8)) == (3 + 8)) NSLog(@"NSMaxRange is sum of location and length"); // range is {1, 14} print_range(NSUnionRange(NSMakeRange(1, 10), NSMakeRange(5, 10))); // range is {1, 20} print_range(NSUnionRange(NSMakeRange(1, 10), NSMakeRange(11, 10))); } return 0; }