(string.length,0)是字符串的有效范围吗?

时间:2012-10-23 21:54:00

标签: objective-c ios cocoa nsstring

NSString-substringWithRange:这样的

-rangeOfString:options:range:方法声明:

  

重要提示:如果aRange的任何部分所在,则引发NSRangeException   超出字符串的末尾。

在我看来,range(string.length,0)超出字符串的结尾。但是,[string substringWithRange:NSMakeRange(string.length, 0)]不会引发NSRangeException,但会返回一个空字符串。所以我不确定(string.length,0)是否是有效范围。

相比之下,[string substringWithRange:NSMakeRange(string.length + 1, 0)][string substringWithRange:NSMakeRange(string.length, 1)]都会引发NSRangeException。但它们非常明显地超越了结束,而(string.length,0)似乎是一个关键点。

2 个答案:

答案 0 :(得分:5)

这可能是语义问题,但我会说(长度为0)字符串的末尾,而不是超出它。当然(长度,1)将超出终点。

答案 1 :(得分:2)

您可以将范围内的0长度(在字符串的上下文中)视为光标的位置,如果它类似于文本字段或文本视图。因此,(string.length, 0)的范围相当于将文本光标位置设置在字符串的最后。