2010-10-15 4 views
8

In Xcode, wenn ich eine NSString habe, die eine Zahl enthält, zB @ "12345", wie teile ich es in ein Array, das die Komponenten darstellt, dh "1", "2", "3", "4", " 5" ... Es ist ein componentsSeparatedByString auf das NSString Objekt, aber in diesem Fall gibt es keine Trennzeichen ...Wie teilen Sie NSString in Komponententeile?

Antwort

4

Es ist wie characterAtIndex: scheinen mag den Trick tun würde, aber das gibt ein unichar, die keine ist NSObject-abgeleiteter Datentyp und kann daher nicht direkt in ein Array eingefügt werden. Sie müssten mit jedem Unicar eine neue Zeichenfolge erstellen.

Eine einfachere Lösung ist die Verwendung von substringWithRange: mit 1-Zeichen-Bereichen. Führen Sie die Zeichenfolge durch eine einfache for (int i=0;i<[myString length];i++)-Schleife, um jeden 1-Zeichen-Bereich zu einer NSMutableArray hinzuzufügen.

+0

Die brillant gearbeitet, Vielen Dank für die schnelle Antwort :-) –

1

A NSString bereits ist ein Array seiner Komponenten, wenn Sie unter Komponenten einzelne Zeichen verstehen. Verwenden Sie [string length], um die Länge der Zeichenfolge zu erhalten, und [string characterAtIndex:], um die Zeichen abzurufen.

Wenn Sie wirklich ein Array von String-Objekten mit nur einem Zeichen benötigen, müssen Sie dieses Array selbst erstellen. Überstreichen Sie die Zeichen in der Zeichenkette mit einer for-Schleife, erstellen Sie eine neue Zeichenkette mit einem einzelnen Zeichen unter Verwendung von [NSString stringWithFormat:] und fügen Sie diese zu Ihrem Array hinzu. Aber das ist normalerweise nicht notwendig.

0

Sie wissen nicht, ob das funktioniert für das, was Sie tun wollen, aber:

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

Vergewissern Sie sich die Dokumentation auf UTF8String

1

In Ihrem Fall zu lesen, da Sie kein Trennzeichen haben, haben Sie getrennte Zeichen von

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

oder dieses

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

Das ist der einzige Weg, den ich sehe, im Moment.

24

Es ist ein gebrauchsfertiges Memberfunktion von NSString dafür, dass:

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