在Objective-C中将char转换为NSString

31

如何在Objective-C中将char转换为NSString?

不是以null结尾的C字符串,而只是一个简单的char c = 'a'

2个回答

43

你可以使用stringWithFormat:方法,传入一个%c的格式来表示字符,像这样:

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

太棒了,谢谢BoltClock。我是Objective-C的新手,很多东西对我来说都有点难以发现。谢谢! :-) - Senkwe
@Hovito:如果你使用Xcode,记得有内置的文档查看器 :) - BoltClock
2
stringWithFormat 在我看来有点过度设计了。 - Seva Alekseyev
@Seva:是的,我同意,我猜这是因为有额外的NSString包含格式。我给你的答案点了赞 :) - BoltClock

8
你可以通过以下方式将一个字符转换为C字符串:

char str[] = { 'A', '\0' };

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" 参数的原因。
另外,请注意上面的两个代码片段生成具有不同释放要求的字符串。后者生成一个自动释放的字符串,而前者生成一个需要 [release] 调用的字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接