目标c比较范围相交

时间:2012-04-16 10:48:44

标签: objective-c

我试图找到2个数字范围的交集,比如说......

范围A从10到100, 范围B为60至70

如果没有编写if语句的负载来计算两个范围的交集,是否有一种简单的方法,所以在这个例子中它将是10。

谢谢,

2 个答案:

答案 0 :(得分:31)

如果您拥有或生成NSRange个对象,NSIntersectionRange功能将为您执行此操作。只要确保在没有交叉点时检查它返回的内容。

NSRange a = NSMakeRange(10, 90);
NSRange b = NSMakeRange(60, 10);
NSRange intersection = NSIntersectionRange(a, b);
if (intersection.length <= 0)
    NSLog(@"Ranges do not intersect");
else
    NSLog(@"Intersection = %@", NSStringFromRange(intersection));

答案 1 :(得分:3)

您可以将此方法用于此目的:

NSRange NSIntersectionRange (
   NSRange range1,
   NSRange range2
);

您可以在此处找到所有信息:

NSIntersectionRange Apple Doc