2011-02-27 88 views

回答

36

您可以使用stringWithFormat:,传递的%c的格式来表示一个字符,像这样:

char c = 'a'; 
NSString *s = [NSString stringWithFormat:@"%c", c]; 
+0

太棒了,谢谢BoltClock。我是Objective-C的新手,目前这些东西对我来说有点不可思议。谢谢! :-) – Senkwe 2011-02-27 17:41:24

+0

@Hovito:如果你使用Xcode,请记住总是有内置的文档查看器:) – BoltClock 2011-02-27 17:43:13

+1

stringWithFormat是一个矫枉过正的问题,恕我直言。 – 2011-02-27 17:43:45

6

你可以做一个C-串出一个性格是这样的:

char cs[2] = {c, 0}; //c is the character to convert 
NSString *s = [[NSString alloc] initWithCString:cs encoding: SomeEncoding]; 

或者,如果已知该字符是ASCII字符(即拉丁字母,数字或标点符号),则可使用另一种方法:

unichar uc = (unichar)c; //Just extend to 16 bits 
NSString *s = [NSString stringWithCharacters:&uc length:1]; 

后面的代码段肯定会失败(不会崩溃,但会产生错误的字符串)与国家字符。对于那些,简单的扩展到16位不是正确的转换为Unicode。这就是为什么需要encoding参数。

另请注意,上面的两个代码片段会生成一个字符串,其中具有不同的释放要求。后者产生一个自动释放字符串,前者产生一个需要[释放]调用的字符串。