[NSString substringWithRange] 中的错误如果字符是 4 字节长度的 UTF8?
Bug in [NSString substringWithRange] if character would be UTF8 with 4 byte length?
我必须检查给定 NSString 中的每个字符是否符合某些条件。
当字符串包含将以 4 个字节(UTF-8 编码)表示的字符时,结果不是我预期的字符。
NSString* oneCharString = [@"" substringWithRange:NSMakeRange(0, 1)];
调试器显示:
它看起来像一个空字符串。但是检查显示了一些值(可能是非字符的符号?)。
如果你想得到一个字符串的第一个字符,你需要这样做:
NSString *str = ... // the string such as @""
NSRange firstRange = [str rangeOfComposedCharacterSequenceAtIndex:0];
NSString *oneCharString = [str substringFromRange:firstRange];
此代码正确处理组合字符。
我必须检查给定 NSString 中的每个字符是否符合某些条件。
当字符串包含将以 4 个字节(UTF-8 编码)表示的字符时,结果不是我预期的字符。
NSString* oneCharString = [@"" substringWithRange:NSMakeRange(0, 1)];
调试器显示:
它看起来像一个空字符串。但是检查显示了一些值(可能是非字符的符号?)。
如果你想得到一个字符串的第一个字符,你需要这样做:
NSString *str = ... // the string such as @""
NSRange firstRange = [str rangeOfComposedCharacterSequenceAtIndex:0];
NSString *oneCharString = [str substringFromRange:firstRange];
此代码正确处理组合字符。