【Foundation-62-1】#import <Foundation/NSRange.h>范围

来源:互联网 发布:ray面膜 知乎 编辑:程序博客网 时间:2024/06/09 07:42


// NSRange 的结构体

typedef struct _NSRange {

   NSUInteger location;

   NSUInteger length;

} NSRange;

    NSRange theRange = NSMakeRange(2, 4);    NSUInteger loc = theRange.location; // 起始位置    NSUInteger len = theRange.length;   // 长度        


// NSRange 的指针  啥用子类?没用过,求告知

typedefNSRange *NSRangePointer;

????



// 创建 NSRange

NS_INLINENSRange NSMakeRange(NSUInteger loc,NSUInteger len) {

   NSRange r;

    r.location = loc;

    r.length = len;

   return r;

}

    NSRange theRange = NSMakeRange(2, 4);


// 最大值

NS_INLINENSUInteger NSMaxRange(NSRange range) {

   return (range.location + range.length);

}

    NSRange theRange = NSMakeRange(2, 4);    NSUInteger six = NSMaxRange(theRange);<span style="white-space:pre"></span>


// 判断位置是否在 范围内

NS_INLINEBOOL NSLocationInRange(NSUInteger loc,NSRange range) {

   return (!(loc < range.location) && (loc - range.location) < range.length) ?YES : NO;

}

    if (NSLocationInRange(3, NSMakeRange(1, 4))) {        NSLog(@"yes");    }


// 判断2个范围是否完全一致

NS_INLINEBOOL NSEqualRanges(NSRange range1,NSRange range2) {

   return (range1.location == range2.location && range1.length == range2.length);

}

    if (NSEqualRanges(NSMakeRange(1, 2), NSMakeRange(2, 3))) {        NSLog(@"yes");    }


FOUNDATION_EXPORTNSRange NSUnionRange(NSRange range1,NSRange range2);// 并集

FOUNDATION_EXPORTNSRange NSIntersectionRange(NSRange range1,NSRange range2);// 交集

FOUNDATION_EXPORTNSString *NSStringFromRange(NSRange range);// 范围转字符串

FOUNDATION_EXPORTNSRange NSRangeFromString(NSString *aString);// 字符串转范围


    NSRange range1 = NSMakeRange(1, 5);<span style="white-space:pre"></span>12345    NSRange range2 = NSMakeRange(3, 5);<span style="white-space:pre"></span>34567        NSRange unionRange = NSUnionRange(range1, range2);<span style="white-space:pre"></span>1234567    NSRange intersectionRange = NSIntersectionRange(range1, range2);<span style="white-space:pre"></span>345        NSString *rangeStr = NSStringFromRange(range1);<span style="white-space:pre"></span>{1,5}    NSLog(@"%@",rangeStr);        NSRange strRange = NSRangeFromString(@"{1,4}");        



@interface NSValue (NSValueRangeExtensions)


+ (NSValue *)valueWithRange:(NSRange)range;// 通过范围创建NSValue

@property (readonly)NSRange rangeValue;


@end


0 0