2010-03-18 45 views
6

我有以下的代码,它可以像我期望的那样工作。我想知道是否有一种公认的Cocoa方法将字符串中的每个字符作为数组中的一个对象拆分为一个数组?如何通过字符串中的每个字符来分割NSString?

- (NSString *)doStuffWithString:(NSString *)string { 
    NSMutableArray *stringBuffer = [NSMutableArray arrayWithCapacity:[string length]]; 
    for (int i = 0; i < [string length]; i++) { 
     [stringBuffer addObject:[NSString stringWithFormat:@"%C", [string characterAtIndex:i]]]; 
    } 

    // doing stuff with the array 

    return [stringBuffer componentsJoinedByString:@""]; 
} 
+0

我知道你可以使用分隔符将NSString拆分为数组。也许你可以使用“”作为分隔符。只是猜测: 'stringBuffer = [string componentsSeparatedByString:@“”];' – 2010-03-18 10:46:01

+0

@wic:返回一个元素的数组:原始字符串。 – 2010-03-18 11:14:40

+0

@Nik:数字。也许正则表达式分割使用'/./'。尽管我认为Cocoa缺乏正则表达式支持。 – 2010-03-18 11:53:23

回答

8

由于字符串已经是一个字符数组,似乎......冗余。

+0

是的,我非常想要一个数组,我将所有的注意力放在如何创建数组上。我想要做的是对字符串进行一些排列,在不创建数组的情况下,我可以轻松地在NSMutableString上执行该排列。感谢您让我走上正轨。 – 2010-03-18 10:55:24

3

如果你确实需要NSStringNSArray个字符,我认为你创建它的方法是可以的。

但似乎有问题的是,您的目的不能以更具可读性,安全性(和性能优化)的方式完成。有一件事情对我来说尤其危险:将字符串拆分为unicode字符(大多数情况下)不会达到您所期望的。有多个由多个unicode代码点组成的字符。并且有unicode代码点实际上不止一个字符。除非你知道这些(或者可以保证你的输入不包含任意字符串),否则你不应该在字符级别上使用unicode字符串。

相关问题