如何从 NSString 获取单个 NSString 字符

我想从 NSString 中的某个地方得到一个字符,我想得到的结果是一个 NSString。

这是我用来在索引处获取单个字符的代码:

[[s substringToIndex:i] substringToIndex:1]

还有更好的办法吗?

71124 次浏览

这还将检索索引 i 处的字符作为 NSString,并且只使用 NSRange 结构,而不使用额外的 NSString。

NSString * newString = [s substringWithRange:NSMakeRange(i, 1)];

您的建议只适用于 ASCII 这样的简单字符。NSStrings 存储 Unicode,如果你的角色有几个 unicars 长,那么你可能会得到胡言乱语。使用

- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;

如果你想确定你的角色有多少个独角兽。我使用它逐步遍历字符串以确定字符边框出现的位置。

能够完全使用 Unicode 是一件有点麻烦的工作,但这取决于您使用的语言。我看到很多亚洲文字,所以大多数字符溢出从一个空间,所以这是我需要做的工作。

如果只想从 NSString 中获取一个字符,可以尝试这样做。

- (unichar)characterAtIndex:(NSUInteger)index;

用法如下:

NSString *originalString = @"hello";
int index = 2;
NSString *theCharacter = [NSString stringWithFormat:@"%c", [originalString characterAtIndex:index-1]];
//returns "e".
NSMutableString *myString=[NSMutableString stringWithFormat:@"Malayalam"];
NSMutableString *revString=@"";


for (int i=0; i<myString.length; i++) {
revString=[NSMutableString stringWithFormat:@"%c%@",[myString characterAtIndex:i],revString];
}
NSLog(@"%@",revString);