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?


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!


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.