2

给定一个由 X 个汉字组成的句子。我想用 Objective-C 或 C++ 解析出每个字符。

我试过了:

NSString * nsText = [NSString stringWithFormat:@"你好吗"];
for (int i = 0; i < [nsText length]; i++) 
{
  char current = [nsText characterAtIndex:i];
  printf("%i: %c\n", i, current);
}

但我没有得到正确的字符,我得到了索引 0 = '、索引 1 = } 等。长度正确返回,等于 3。我需要 UTF8 编码才能将其显示到 UI。

任何提示都会有所帮助。谢谢

4

2 回答 2

5

错了三件事。首先,characterAtIndex:返回 a unichar,它大于char您分配的 。你在那里丢失了信息。其次,%c是用于打印 ASCII 值(8 位)的格式说明符。您希望%C(大写“C”)打印 16 位unichar. 最后,printf()似乎不接受%C,所以需要NSLog()改用。重写,然后,我们有:

NSString * nsText = [NSString stringWithFormat:@"你好吗"];
for (int i = 0; i < [nsText length]; i++) 
{
    unichar current = [nsText characterAtIndex:i];
    NSLog(@"%i: %C\n", i, current);
}
于 2012-05-22T07:21:56.970 回答
0

这能解决你的问题吗?

NSString * nsText = [NSString stringWithFormat:@"你好吗"];
for (int i = 0; i < [nsText length]; i++) {
    NSString *str = [nsText substringToIndex:i+1];
    NSString *str2 =[str substringFromIndex:i];
    NSLog(@"%@",str2);
}
于 2012-05-22T07:25:29.883 回答