如何从NSString中获取单个NSString字符

时间:2010-10-01 05:05:59

标签: objective-c cocoa-touch nsstring

我想从NSString中的某个地方获取一个角色。我希望结果是一个NSString。

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

[[s substringToIndex:i] substringToIndex:1]

有更好的方法吗?

4 个答案:

答案 0 :(得分:130)

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

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

答案 1 :(得分:38)

如果您只想从NSString中获取一个角色,可以试试这个。

- (unichar)characterAtIndex:(NSUInteger)index;

像这样使用:

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

答案 2 :(得分:23)

您的建议仅适用于ASCII等简单字符。 NSStrings存储unicode,如果你的角色是几个unichars,那么你最终可能会有胡言乱语。使用

- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;

如果你想确定你的角色有多少个unichars。我用它来逐步检查我的字符串以确定字符边界的出现位置。

完全无法使用是一项工作,但取决于您使用的语言。我看到很多亚洲文字,所以大多数角色从一个空间溢出,所以这是我需要做的工作。

答案 3 :(得分:0)

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