NSRange各种初始化方法

原文:
http://blog.csdn.net/jakewwwww/article/details/9151631

#import 

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;
}

你可能感兴趣的:(NSRange各种初始化方法)