子串异常?

时间:2014-07-13 22:09:46

标签: ios substring

我试图对字符串中的每个字符执行操作。但我一直收到一个没有意义的错误:

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

{2,3}怎么出界? 谢谢!

1 个答案:

答案 0 :(得分:0)

NSRange不是{start,end},它是{start,length}。范围{2,3}包括字符串的字符2,3和4 ..长度为4的字符仅包含索引0,1,2和3的字符。

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