2012-02-05 14 views
14

come posso dividere la stringa @ "Hello" su un elemento dell'array0: 'H', elemento1: 'e', ​​elemento2: 'l', elemento3: 'l', item4: 'o'. Ho cercato ovunque, ma cant trovare il modo .. :(Dividere una NSString in una matrice in Objective-C

oh, in Objective-C, naturalmente.

grazie per il vostro aiuto.

+1

Date un'occhiata in [NSString get -characters] (http://stackoverflow.com/questions/3886882/nsstring-get-characters) e [Come ottenere un singolo carattere NSString da un NSStri ng] (http://stackoverflow.com/questions/3836670/how-to-get-a-single-nsstring-character-from-an-nsstring) post. –

risposta

33

Se siete soddisfatti con una serie C di char s, provare:

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

Se avete bisogno di un NSArray, tenta:

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]; 
} 

E array conterrà ogni carattere come un elemento di esso.

+0

grazie mille! –

+0

c'è un comando per sostituire una lettera nell'array? come [array replaceObjectAtIndex: 0] hah, qualcosa del genere? se voglio sostituire qualcosa nell'indice array? –

+2

@ H2CO3 invece di usare la sottostringa con un intervallo di 1, basta usare '-characterAtIndex:'. –

4

È possibile utilizzare - (unichar)characterAtIndex:(NSUInteger)index per accedere ai caratteri della stringa in ogni indice.

Quindi,

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

c'è un comando per sostituire una lettera nell'array? come [array replaceObjectAtIndex: 0] hah, qualcosa del genere? se voglio sostituire qualcosa nell'indice array? –

+0

Ora hai un array C di base che puoi apportare modifiche all'indice per indice. Ho cambiato la mia risposta per riflettere la tua domanda aggiuntiva. –

+0

uomo fantastico! molte grazie! –

6

Prova questo:

- (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

Upvote per essere UTF8 consapevole e conservare caratteri a più byte (emoji, caratteri accodati) insieme. –

0

A user529758 menzioni, dividere la stringa - il modo in cui C - come:

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

Ma poi ciclo utilizzando:

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

ricorda che 'const char * array' delle stringhe può terminare con il carattere NUL per terminare le stringhe' '\ 0'', quindi la tua dimensione potrebbe essere 1 maggiore della quantità di caratteri leggibili. http://en.wikipedia.org/wiki/Ascii#ASCII_control_code_chart – LenArt

Problemi correlati