3

我正在经历这种奇怪的效果,在 rangeOfString 上调用 location 会返回一个非常大的值,而它不应该......

我的代码如下所示:

NSRange range = [string rangeOfString:subString];
NSLog(@"range is %@", NSStringFromRange(range));

这注销到range is {2147483647, 0}

无法弄清楚究竟是为什么。

可能导致这种情况的一些事情:

  • 子字符串是使用 NSString 的 initWithBytes 方法从字节数组生成的
  • 子字符串告诉我它是一个 NSCFString *,但也说“变量不是 NSString”
  • 子字符串按预期登录控制台

非常感谢任何帮助

这里有一些让我觉得很奇怪的东西:

在此处输入图像描述

4

1 回答 1

6

这只是意味着您的字符串中不存在您的子字符串,请执行以下操作来验证这一点:

NSRange range = [string rangeOfString:subString];
if (range.location == NSNotFound) {
  NSLog(@"String not found");
} else {
  NSLog(@"range is %@", NSStringFromRange(range));
}
于 2012-09-26T00:30:30.220 回答