2010-10-15 4 views
8

In Xcode, se ho un numero NSString contenente un numero, cioè @ "12345", come lo divido in una matrice che rappresenta le parti componenti, ad esempio "1", "2", "3", "4", " 5" ... c'è un componentsSeparatedByString sull'oggetto NSString, ma in questo caso non v'è alcun delimitatore ...Come si divide NSString in componenti?

risposta

4

può sembrare characterAtIndex: farebbe il trucco, ma che restituisce un unichar, che non è un Tipo di dati derivato da NSO e quindi non può essere inserito direttamente in un array. Dovresti costruire una nuova stringa con ogni unichar.

Una soluzione più semplice è utilizzare substringWithRange: con intervalli di 1 carattere. Esegui la stringa attraverso un semplice ciclo for (int i=0;i<[myString length];i++) per aggiungere ciascun intervallo di 1 carattere a un NSMutableArray.

+0

che ha funzionato brillantemente, grazie mille per la risposta rapida :-) –

1

A NSString già è un array di componenti, se per componenti si intendono singoli caratteri. Utilizzare [string length] per ottenere la lunghezza della stringa e [string characterAtIndex:] per ottenere i caratteri.

Se è veramente necessario disporre di una matrice di oggetti stringa con un solo carattere, sarà necessario creare tale array autonomamente. Passa sopra i caratteri nella stringa con un ciclo for, crea una nuova stringa con un singolo carattere utilizzando [NSString stringWithFormat:] e aggiungila all'array. Ma questo di solito non è necessario.

0

Non so se questo funziona per ciò che si vuole fare, ma:

const char *foo = [myString UTF8String] 
char third_character = foo[2]; 

Assicurarsi di leggere la documentazione sul UTF8String

1

Nel tuo caso, dal momento che non si ha delimitatore, devi per ottenere caratteri separati da

- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange 

o questa

- (unichar)characterAtIndex:(NSUInteger) index inside a loop. 

Che l'unico modo che vedo, al momento.

24

C'è una funzione di membro di pronto NSString per farlo:

NSString* foo = @"safgafsfhsdhdfs/gfdgdsgsdg/gdfsgsdgsd"; 
NSArray* stringComponents = [foo componentsSeparatedByString:@"/"];