3

是否可以在 NSMakeRange 中进行负定位?

NSString *string = @"abc";
NSString *myString = [string substringWithRange:NSMakeRange(-1, 1)];
4

2 回答 2

10

不。

location并且length无符号整数

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

而且,NSMakeRange函数定义如下:

NSRange NSMakeRange (
    NSUInteger loc,
    NSUInteger len
);
于 2012-02-21T10:31:16.093 回答
0

是的,有可能,但实际上没有意义,因为负值会转化为另一个非常大的正值。

NSUInteger loc = -1; // equal to 4294967295

1.所以,你需要一个很长的字符串。
2.因此,您需要将负值转换为巨大的值,以使您的示例有效

NSString *string = @"abc";
NSRange r1 = NSMakeRange(-NSUIntegerMax, 1);
NSString *myString = [string substringWithRange:r1];
NSLog(@"%@",myString);
于 2012-02-21T10:54:24.973 回答