Розділіть NSString кілька разів на одному роздільнику


76

Зараз я отримую такий рядок:

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

І я розбиваю це так:

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

Зараз я отримаю такий рядок:

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

Чи можу я (і як) використовувати той самий спосіб, що і вище, щоб відокремити рядок більше одного разу, використовуючи "|" сепаратор?


5
Якось я підозрюю, що майже всі глядачі та прихильники цього питання та його відповіді були людьми, які просто шукали NSStringметод "розколу" і знаходили відповідь тут випадково.
Mark Amery

Перший рядок - це просто створення NSArray, який ви викидаєте на рядку 3.
встав

Відповіді:


169

Наступний рядок ...

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

призведе до того, що масив тепер міститиме 3 елементи, а не 2 ..... не потрібно знову розділяти!


щиро дякую! просто потрібно зрозуміти, як створити та показати UITableViewCell з 3 мітками ...
Сем Парріш

Ви можете або підклас UITableViewCell, і робити все вручну, АБО ви можете використовувати один із попередньо встановлених стилів комірок подання таблиці та використовувати подання вмісту, щоб додати додаткову мітку. У керівництві по яблуках все це докладно ....
Саймон Лі


Ознайомтеся з частиною "Налаштування клітин" у розділі "Більш пильний огляд комірок таблиці"
Саймон Лі

Я створив власну таблицю viewviewcell і використовував той самий код, але коли я налаштовую комірку, що я ставлю для третьої мітки?
Sam Parrish

5

робити так.

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

Немає необхідності зберігати масив.


Чому я написав код - у своєму коді він написав заяву retain. Це не потрібно.
Тендулкар

1
не використовувати initWithFormat, якщо не використовується формат? просто: NSString * testString = @ "blahblah";
pfrank
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.