检查NSMakeRange是否能够取得范围或不取

时间:2011-04-15 07:05:15

标签: iphone nsrange

我目前正在使用以下代码来获取子字符串

NSString *s1 = [stringName substringWithRange: NSMakeRange(0, 2)];

NSString *s2 = [stringName substringWithRange: NSMakeRange(2, 4)];

NSString *s3 = [stringName substringWithRange: NSMakeRange(6, [stringName length])];

这里,如何检查范围是否有效,因为我无法确定字符串的长度,因为它可能会在时间上有所不同。请帮我解决这个问题..

2 个答案:

答案 0 :(得分:1)

对于s3,你从位置开始,并且要求字符串中的字符数与字符串一样多。但是因为你从第6位开始,所以要求6个字符太多了。你需要这样做:

NSString *s3 = [stringName substringWithRange: NSMakeRange(6, [stringName length] - 6)];

答案 1 :(得分:1)

正如苹果文档所说..

<强> substringWithRange:

返回一个字符串对象,其中包含位于给定范围内的接收者字符。

- (NSString *)substringWithRange:(NSRange)aRange

<强>人气指数

A range. The range must not exceed the bounds of the receiver.

每次构造NSMakeRange()时都需要检查,无论你在String的长度内指定的范围是否......不是......使用一些if and else条件