NSRange各种初始化方法

简介: NSRange各种初始化方法
#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;
}
目录
相关文章
|
1月前
|
C++
C++构造函数初始化类对象
C++构造函数初始化类对象
21 0
|
4月前
|
存储 Java 容器
Java数组的初始化方法
Java数组的初始化方法
|
5月前
|
JavaScript 前端开发
浅谈一下实例化
浅谈一下实例化
|
6月前
|
C#
C#对象初始化器
C#对象初始化器
|
6月前
|
编译器 C++
30利用构造函数对类对象进行初始化
30利用构造函数对类对象进行初始化
48 0
获取类中所有的bean
获取类中所有的bean
45 0
通过构造方法使属性初始化
通过构造方法使属性初始化
107 0
|
存储
什么是实例化?
什么是实例化?
87 0
|
缓存 Java 开发者
Spring源码(八)-构造方法实例化Bean-createBeanInstance
各位小伙伴好,这是 Spring 源码系列的第八篇文章。本篇篇幅较长(五千八百字),建议收藏慢慢品尝。
658 1
|
Java C++
C++类中在构造器中调用本类的另外构造器
C++类中在构造器中调用本类的另外构造器
98 0