2012-05-22 20 views
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。

任何提示将有所帮助。 谢谢

回答

5

三件事情错了。首先,characterAtIndex:会返回一个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); 
} 
+0

谢谢,这个效果很好。 – Lisa

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); 
}