2010-03-18 5 views
6

다음 코드는 예상대로 작동합니다. 배열의 객체로 문자열의 각 문자가있는 배열로 문자열을 분할하는 데 사용되는 코코아 방식이 허용되는지 알고 싶습니다.문자열의 각 문자로 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 : @ ""]; ' –

+0

@wic : 원래의 문자열 인 요소 하나의 배열을 반환합니다. –

+0

@Nik : 그림. 어쩌면 정규 표현식으로'/./ '를 사용하여 분할 할 수 있습니다. Cocoa에서는 regexp 지원이 부족하다고 생각합니다. –

답변

8

문자열은 이미 문자 배열로되어있어 중복 된 것처럼 보입니다.

+0

예, 배열을 작성하는 방법에 중점을 둔 배열을 필요로했습니다. 내가하고 싶은 일은 배열을 만들지 않고 NSMutableString에서 쉽게 할 수있는 문자열에 대한 순열을 수행하는 것입니다. 저를 올바른 길로 인도 해 주셔서 감사합니다. –

3

NSArrayNSString10 인 경우 각자 한 문자 씩 작성하는 것이 좋다고 생각합니다.

그러나 더 읽기 쉽고 안전하며 (성능 최적화 된) 방법으로는 귀하의 목적을 달성 할 수 없다는 것이 의문시됩니다. 한가지는 특히 나에게 위험한 것처럼 보입니다 : 문자열을 유니 코드 문자로 나누는 것은 여러분이 기대하는대로하지 않는 (대부분의 경우) 것입니다. 하나 이상의 유니 코드 코드 포인트로 구성된 문자가 있습니다. 실제로 하나 이상의 문자 인 유니 코드 코드 포인트가 있습니다. 이들에 대해 알지 못한다면 (또는 입력에 임의의 문자열이 포함되지 않을 수도 있음) 문자 수준의 유니 코드 문자열을 찌르지 않아야합니다.

관련 문제