2012-02-05 6 views
14

どのように文字列@「Hello」を配列item0に分割できますか: 'H'、item1: 'e'、item2: 'l'、item3: 'l' item4: 'o'私は...どこでも検索が、どのように見つける傾ける:(NSStringをObjective-Cの配列に分割します

ああ、もちろんObjective-Cで。あなたの助けを

感謝を。

+1

を見てみましょう[NSString get -characters](http://stackoverflow.com/questions/3886882/nsstring-get-characters)および[NSStriから単一のNSString文字を取得する方法ng](http://stackoverflow.com/questions/3836670/how-to-get-a-single-nsstring-character-from-an-nsstring)post。 –

答えて

33

、試してみてください。

const char *array = [@"Hello" UTF8String]; 

あなたがNSArrayのが必要な場合は、試してみてください。

NSMutableArray *array = [NSMutableArray array]; 
NSString *str = @"Hello"; 
for (int i = 0; i < [str length]; i++) { 
    NSString *ch = [str substringWithRange:NSMakeRange(i, 1)]; 
    [array addObject:ch]; 
} 

そしてarrayはそれの要素として、それぞれの文字が含まれています。

+0

ありがとう! –

+0

には、配列内の文字を置き換えるコマンドがありますか? [array replaceObjectAtIndex:0]のようなものですか?もし私が配列のインデックスで何かを置き換えたいですか? –

+2

@ H2CO3の範囲で部分文字列を使用する代わりに、 '-characterAtIndex:'を使用してください。 –

4

あなたは各インデックスで文字列の文字にアクセスするために- (unichar)characterAtIndex:(NSUInteger)indexを使用することができます。あなたがchar SのC配列に満足している場合は

ので、

NSString* stringie = @"astring"; 
NSUInteger length = [stringie length]; 
unichar stringieChars[length]; 
for(unsigned int pos = 0 ; pos < length ; ++pos) 
{ 
    stringieChars[pos] = [stringie characterAtIndex:pos]; 
} 
// replace the 4th element of stringieChars with an 'a' character 
stringieChars[3] = 'a'; 
// print the modified array you produced from the NSString* 
NSLog(@"%@",[NSString stringWithCharacters:stringieChars length:length]); 
+0

には、配列内の文字を置き換えるコマンドがありますか? [array replaceObjectAtIndex:0]のようなものですか?もし私が配列のインデックスで何かを置き換えたいですか? –

+0

これで、索引によって索引を変更できる基本的なC配列が得られました。あなたの追加した質問を反映するために私の答えを変更しました。 –

+0

クールな男!どうもありがとう! –

6

このお試しください:

- (void) testCode 
{ 
    NSString *tempDigit = @"12345abcd" ; 
    NSMutableArray *tempArray = [NSMutableArray array]; 
    [tempDigit enumerateSubstringsInRange:[tempDigit rangeOfString:tempDigit] 
            options:NSStringEnumerationByComposedCharacterSequences 
           usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { 
      [tempArray addObject:substring] ; 
     }] ; 

    NSLog(@"tempArray = %@" , tempArray); 
} 
+0

UTF8を認識し、マルチバイト文字(絵文字、漢字)をまとめて保存するためのUpvote。 –

0

user529758は言及して、あなたの文字列を分割 - Cの方法 - のような:

const char *array = [@"Hello" UTF8String]; 

をしかし、それは使用してループ:

for (int i = 0; i < sizeof(array); i++) { 
    doSomethingWithCharacter(array[i]); 
} 
+0

文字列の 'const char * array'は' \ 0''文字列を終了するためにNUL文字で終わるかもしれないので、あなたのサイズは読み込み可能な文字数よりも1倍大きくなるかもしれません。 http://en.wikipedia.org/wiki/Ascii#ASCII_control_code_chart – LenArt