iOS-NSRange NSMakeRange(location,length)介绍

来源:互联网 发布:飞鸟知鱼 编辑:程序博客网 时间:2024/05/23 17:29

     typedef struct _NSRange

     {

        NSUInteger location;

        NSUInteger length;

     } NSRange;

     

     NSRange是一个结构体,其中location是一个以0为开始的indexlength是表示对象的长度。

     如果你要获取一个字符串或者一个数组中的一个子集,那么使用NSRange会很方便的定义这个子集


下面这个例子,将输出NSRange

    NSString *str1 = @"typedef struct _NSRange";    NSRange range = NSMakeRange(16, 7);    NSLog(@"%@",[str1 substringWithRange:range]);

搜索字符串

    NSRange range1 = [str1 rangeOfString:@"NSRange"];    if (range1.length > 0)    {        NSLog(@"Range1 is: %@", NSStringFromRange(range));    }    //NSStringFromRange()方法,将一个NSRange返回一个NSString。    //而另外一个函数NSRangeFromString()则是将NSString转换为NSRange        //证明后向前反向搜索字符串:    NSString *str2 = @"typedef struct de_NSRange";    NSRange range2 = [str2 rangeOfString:@"de" options:NSBackwardsSearch];    if (range2.length > 0) {        NSLog(@"Range2 is: %@",NSStringFromRange(range2));    }        //本例证明搜索是从后向前的,字符串中出现了两个de,搜索出的range为后者

数组中应用

    NSArray *array = [NSArray arrayWithObjects:@"a",@"b",@"c",@"d",@"f", nil];    NSRange range3 = NSMakeRange(1, 3);    NSArray *subArray = [array subarrayWithRange:range3];    NSLog(@"subArray = %@",subArray);    //获取数组中索引为1(第二个)开始的3个元素

     以下就是在处理行列时,可能需要的一些功能:

     NSEqualRanges()        是否相等

     NSIntersectionRange()

     NSLocationInRange()

     NSMakeRange()          赋值起始点location长度length

     NSMaxRange()            location + length相加长度

     NSRangeFromString()    NSString转换为NSRange

     NSStringFromRange()    NSRange转换为NSString

     NSUnionRange()         联合


    NSRange range4 = NSMakeRange(5, 15);    NSInteger num = NSMaxRange(range4);    NSLog(@"%ld",(long)num);


1 0
原创粉丝点击