0

にすべての文字を追加したいNSArray ("123" -> To NSArray with "1","2","3")。と をテストcomponentsSeparatedByString:@""しましcomponentsSeparatedByString:nilたが、うまくいきません。誰か助けてもらえますか?

4

2 に答える 2

6

必要に応じて、アクセント付き文字をエンコードするさまざまな方法を考慮して、文字列を合成文字で列挙したい場合があります。

大きな問題ではないかもしれませんが、enumerateSubstringsInRange:options:usingBlock:少なくとも使用すれば処理されます。コードは次のようになります。

NSMutableArray *result;  

NSString *string = @"Genève, Zu\u0308rich, Bellinzona";
//                           ^
//      What humans know as: Zürich

result = [NSMutableArray array];
[string enumerateSubstringsInRange: NSMakeRange(0,string.length)
                           options: NSStringEnumerationByComposedCharacterSequences
                        usingBlock: ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop){
                            // If you want to see the way the string has been split
                            NSLog(@"%@", substring);
                            [result addObject: substring];
                        }
];

「è」は 1 文字ですが、「ü」は複合文字としてエンコードされていることに注意してください。どちらも、ループで使用するために正しく識別されます。"ü"を使用するcharacterAtIndex:と、2 つ (u と ¨) に分割されますが、これはおそらく希望どおりではありません。

于 2013-05-11T08:14:11.310 に答える
-1

このように使えますが、

for (int i=0; i < [myString length]; i++) {
    ... [myString characterAtIndex:i]
   // You can then decide how to assign a value to each individual string, via a switch.

}
于 2013-05-11T07:11:48.103 に答える