[NSString substringWithRange]中的错误,如果字符是UTF8,长度为4个字节?

时间:2016-03-10 16:07:34

标签: ios utf-8 nsstring foundation

我必须检查给定NSString中的每个字符是否存在某种情况。

当字符串包含将以4个字节(以UTF-8编码)表示的字符时,结果不是我期望的字符。

NSString* oneCharString = [@"" substringWithRange:NSMakeRange(0, 1)];

调试器显示:

enter image description here

它看起来像一个空字符串。但检查显示了一些值(可能是非字符的符号?)。

1 个答案:

答案 0 :(得分:1)

如果你想获得字符串的第一个字符,你需要这样做:

NSString *str = ... // the string such as @""
NSRange firstRange = [str rangeOfComposedCharacterSequenceAtIndex:0];
NSString *oneCharString = [str substringFromRange:firstRange];

此代码正确处理组合字符。