Teilen Sie NSString mehrmals auf demselben Trennzeichen

76

Ich erhalte derzeit eine Zeichenfolge wie diese:

@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54"

Und ich teile es so auf:

testArray = [[NSArray alloc] init];
NSString *testString = [[NSString alloc] initWithFormat:@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54,Steve|56,Matty|24,Bill|30,Rob|30,Jason|33,Mark|22,Stuart|54,Kevin|30"];
testArray = [testString componentsSeparatedByString:@","];

dict = [NSMutableDictionary dictionary];
for (NSString *s in testArray) {

    testArray2 = [s componentsSeparatedByString:@"|"];
    [dict setObject:[testArray2 objectAtIndex:1] forKey:[testArray2 objectAtIndex:0]];
}

Ich werde jetzt eine Zeichenfolge wie diese erhalten:

@"Sam|26|Developer,Hannah|22|Team Leader,Adam|30|Director,Carlie|32|PA,Jan|54|Cleaner"

Kann ich (und wie) dieselbe Methode wie oben verwenden, um die Zeichenfolge mehrmals mit dem "|" Separator?

Sam Parrish
quelle
5
Irgendwie vermute ich, dass fast alle Zuschauer und Befürworter dieser Frage und ihrer Antwort Leute waren, die einfach nach NSStringder "Split" -Methode suchten und die Antwort hier im Übrigen entdeckten.
Mark Amery
Die erste Zeile erstellt nur ein NSArray, das Sie in Zeile 3 wegwerfen.
Boxed

Antworten:

169

Die folgende Zeile ...

testArray2 = [s componentsSeparatedByString:@"|"];

bewirkt, dass das Array jetzt 3 Elemente anstelle von 2 enthält ..... keine erneute Aufteilung erforderlich!

Simon Lee
quelle
vielen Dank! Ich muss nur herausfinden, wie man die UITableViewCell mit 3 Labels erstellt und anzeigt ...
Sam Parrish
Sie können entweder UITableViewCell unterordnen und alles manuell ausführen ODER Sie können einen der Zellenstile der voreingestellten Tabellenansicht verwenden und in der Inhaltsansicht eine zusätzliche Beschriftung hinzufügen. Der Apfelführer beschreibt alles ....
Simon Lee
Schauen Sie sich den Teil 'Zellen anpassen' im Abschnitt 'Zellen der Tabellenansicht genauer ansehen' an
Simon Lee
Ich habe die benutzerdefinierte Tabellenansichtszelle erstellt und denselben Code verwendet, aber was gebe ich beim Konfigurieren der Zelle für das dritte Etikett ein?
Sam Parrish
5

mag das.

NSString *testString = [[NSString alloc] initWithFormat:@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54,Steve|56,Matty|24,Bill|30,Rob|30,Jason|33,Mark|22,Stuart|54,Kevin|30"];
    NSArray *testArray = [testString componentsSeparatedByString:@","];
    NSLog(@"%@",testArray);
    for(int i=0;i<[testArray count];i++){
        NSString *str=[testArray objectAtIndex:i];
    NSArray *aa=[str componentsSeparatedByString:@"|"];
    NSLog(@"%@",aa);
    }

Das Array muss nicht beibehalten werden.

Tendulkar
quelle
Warum ich den Code geschrieben habe, ist In seinem Code hat er die Retain-Anweisung geschrieben. Keine Notwendigkeit dafür.
Tendulkar
1
Verwenden Sie initWithFormat nicht, wenn Sie kein Format verwenden? nur: NSString * testString = @ "blahblah";
Frank