2010-03-18 75 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字符串。

相關問題