当看起来有一个非常好的子串方法时,为什么在字符串上使用NSRange?

时间:2013-05-12 22:07:25

标签: ios objective-c

我第一次学习原生iOS开发,我遇到了结构NSRange。我来自Java背景,所以当你只能使用属于NSString类的子串方法时,我并没有真正看到使用范围结构的原因。与使用非范围NSString子串方法相比,使用范围结构有什么好处。

谢谢!

编辑: 看起来我正在考虑子字符串方法:substringFromIndex:substringToIndex:。 考虑到这些方法的不灵活性(即,无法同时选择起点和终点)使得范围结构实例更加必要。虽然我猜你也可以嵌套这两种方法来实现相同的结果。

编辑2:示例。

非范围子字符串方法示例:

NSString *str = @"This is a string.";

NSString *substr = [str substringToIndex:7];

NSString *substr2 = [str substringFromIndex:7];

Ranges substring方法示例:

NSString *substr3 = [str substringWithRange:NSMakeRange(5, 5)];

1 个答案:

答案 0 :(得分:3)

因为基于范围的方法提供了更大的灵活性,并且它们也可以轻松地用于所有NSString搜索方法(使用范围很大)。通常,如果您要创建子字符串,则需要知道从哪里开始或结束,并且该信息可能来自搜索,因此您有一个范围。