有一种NSString方法-characterAtIndex:可以返回一个unichar.
- (单字符)characterAtIndex:(NSUInteger)指数
我想知道这个unichar,显然不是一个NSString,可以转换成一个NSString或者NSString用于比较目的吗?
并且:NSString内部是否只包含一系列unichar项目?
mic*_*moo 68
您有两个选择:第一个是向NSString添加stringWithUnichar方法的类别:
@interface NSString (MNNSStringWithUnichar)
+ (NSString *) stringWithUnichar: (unichar) value;
@end
@implementation NSString (MNNSStringWithUnichar)
+ (NSString *) stringWithUnichar:(unichar) value {
NSString *str = [NSString stringWithFormat: @"%C", value];
return str;
}
@end
Run Code Online (Sandbox Code Playgroud)
然后用它来调用它
NSString *otherString = @"TestString";
NSString *str = [NSString stringWithUnichar:[otherString characterAtIndex:1]];
Run Code Online (Sandbox Code Playgroud)
或者你可以直接这样:
NSString *str = [NSString stringWithFormat:@"%C",[otherString characterAtIndex:1]];
Run Code Online (Sandbox Code Playgroud)
如果要重复使用它,请选择类别,或者如果您只需要执行一次,请使用stringWithFormat示例!
不确定NSString的内部,但我猜它可能包装了一个
unichar *
Run Code Online (Sandbox Code Playgroud)
或一组unichars(如C char*)
unichar只是一个用于存储角色的16位值.与仅为8位的无符号字符不同,它可以容纳超过0-255,因此它也可以容纳16位的unicode字符.NSString是一个(集群)类[es],它包含一个unichars数组
编辑
以下是一些关于人们认为NSString是什么的文章:
http://cocoawithlove.com/2008/08/string-philosophies-char-arrays.html
http://www.reddit.com/r/programming/comments/6v1yw/string_philosophies_char_arrays_stdstring_and/
希望有所帮助!
另一种选择是使用类方法:
+ (id)stringWithCharacters:(const unichar *)characters length:(NSUInteger)length;
Run Code Online (Sandbox Code Playgroud)
所以只需使用:
yourString = [NSString stringWithCharacters: &yourChar length: 1];
Run Code Online (Sandbox Code Playgroud)
yourChar 参数必须是一个指针。
| 归档时间: |
|
| 查看次数: |
27127 次 |
| 最近记录: |