【问题标题】:Substring exception? [duplicate]子字符串异常? [复制]
【发布时间】:2014-07-13 22:09:46
【问题描述】:

我正在尝试对字符串中的每个字符执行操作。但我不断收到一个没有意义的错误:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFString substringWithRange:]: Range {2, 3} out of bounds; string length 4'

{2, 3} 怎么越界了? 谢谢!

【问题讨论】:

  • 是的,2 + 3 >= 4,因此例外。

标签: ios substring


【解决方案1】:

NSRange 不是 {start, end},而是 {start, length}。范围 {2, 3} 包括字符串的字符 2、3 和 4。它的长度为 4,只有索引 0、1、2 和 3 处的字符。

如果您正在迭代单字符子字符串,您可能想尝试使用 enumerateSubstringsInRange:options:usingBlock:NSStringEnumerationByComposedCharacterSequences 选项,而不是自己创建范围。即使对于可变大小的“字符”,例如组合序列和高 unicode 代理对(例如表情符号),这也会为您提供正确的行为。

【讨论】:

  • 谢谢!我其实以为是{start, end}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多