Как создать строку через запятую? - PullRequest
0 голосов
/ 27 декабря 2011

Я хочу создать разделенную запятыми строку, подобную этой.

NSString * list = @ "iPhone, iPad, iPod";

Я пытался так,

[strItemList appendString:[NSString stringWithFormat:@"%@,", [[arrItems objectAtIndex:i]objectForKey:@"ItemList"]]];

Но проблема в том, что я получаю такую ​​строку @ "iPhone, iPad, iPod," Обратите внимание, что в конце строки есть лишняя запятая ",". Как я могу избежать этой лишней запятой?

Не могли бы вы дать мне подсказку. Высоко ценится Заранее спасибо

Ответы [ 8 ]

12 голосов
/ 27 декабря 2011

Чтобы объединить массив строк в одну строку с помощью разделителя (символ, который будет строкой), вы можете использовать этот метод класса NSArray:

NSArray* array = @[@"iPhone", @"iPad", @"iPod"];
NSString* query = [array componentsJoinedByString:@","];

Используя этот метод,вам не нужно будет удалять последнюю лишнюю запятую (или что-то еще), потому что она не добавит ее в последнюю строку.

4 голосов
/ 27 декабря 2011

Вы можете выбрать несколько маршрутов.

Если количество предметов всегда одинаково и известно заранее (что, я полагаю, не так, но я упоминаю это для полноты), просто сделайте всю строку сразу:

[NSString stringWithFormat:@"%@,%@,%@", [[arrItems objectAtIndex:0] objectForKey:@"ItemList"]], [[arrItems objectAtIndex:1] objectForKey:@"ItemList"]], [[arrItems objectAtIndex:2] objectForKey:@"ItemList"]]

Зная, что нежелательная запятая всегда будет последним символом в строке, вы можете сделать ее удаление последним шагом в построении:

} // End of loop
[strItemList removeCharactersInRange:(NSRange){[strItemList length] - 1, 1}];

Или вы можете немного изменить свое мышление и сделать цикл следующим образом:

NSString * comma = @"";
for( i = 0; i < [arrItems count]; i++ ){

    [strItemList appendString:[NSString stringWithFormat:@"%@%@", comma, [[arrItems objectAtIndex:i]objectForKey:@"ItemList"]]];
    comma = @",";
}

Обратите внимание, что comma стоит перед другим элементом. Установка этой строки внутри цикла означает, что ничего не будет добавлено к первому элементу, но символ запятой будет для каждого другого элемента.

2 голосов
/ 27 декабря 2011

После завершения цикла добавьте ниже stmt

strItemList = [strItemList substringToIndex:[strItemList length]-1]
1 голос
/ 27 декабря 2011

Предполагая, что arrItems - это NSArray с элементами @ "iPhone", @ "iPad" и @ "iPod", вы можете сделать это:

NSArray *list = [arrItems componentsJoinedByString:@","]
1 голос
/ 27 декабря 2011

проверить значение количества массивов, если число массивов является последним, затем добавить без запятой, иначе добавить с запятой. попробуйте это, я не уверен, о чем много.

if([arrItems objectAtIndex:i] == arrItems.count){  
[strItemList appendString:[NSString stringWithFormat:@"%@", [[arrItems objectAtIndex:i]objectForKey:@"ItemList"]]];
}

else {
[strItemList appendString:[NSString stringWithFormat:@"%@,", [[arrItems objectAtIndex:i]objectForKey:@"ItemList"]]];

}

0 голосов
/ 19 августа 2013

Этот метод вернет вам строку nsmutable с разделенными запятыми значениями из массива

- (NSMutableString *) strMutableFromArray: (NSMutableArray *) arr withSeperater: (NSString *) saperator {NSMutableString * strResult = [NSM];

for (int j=0; j<[arr count]; j++)
{
    NSString *strBar = [arr objectAtIndex:j];
    [strResult appendString:[NSString stringWithFormat:@"%@",strBar]];
    if (j != [arr count]-1)
    {
        [strResult appendString:[NSString stringWithFormat:@"%@",seperator]];
    }
}
return strResult;

}

0 голосов
/ 28 декабря 2011
// Assuming...
NSDictionary *dictionary1 = [NSDictionary dictionaryWithObject:[NSArray arrayWithObjects:@"iPhone", @"iPodTouch", nil] forKey:@"ItemList"];
NSDictionary *dictionary2 = [NSDictionary dictionaryWithObject:[NSArray arrayWithObjects:@"iPad", @"iPad2", @"Apple TV", nil] forKey:@"ItemList"];
NSDictionary *dictionary3 = [NSDictionary dictionaryWithObject:[NSArray arrayWithObjects:@"iMac", @"MacBook Pro", @"Mac Pro", nil] forKey:@"ItemList"];
NSArray *arrItems = [NSArray arrayWithObjects:dictionary1, dictionary2, dictionary3, nil];

// create string list
NSString *strItemList = [[arrItems valueForKeyPath:@"@unionOfArrays.ItemList"] componentsJoinedByString:@", "];
NSLog(@"All Items List: %@", strItemList);

Вывод: все элементы списка: iPhone, iPodTouch, iPad, iPad2, Apple TV, iMac, MacBook Pro, Mac Pro

0 голосов
/ 27 декабря 2011

NSArray с элементами @ "iPhone", @ "iPad" и @ "iPod"

NSString *str=[[arrItems objectAtIndex:0]objectForKey:@"ItemList"]]

str =   [str stringByAppendingFormat:@",%@",[[arrItems objectAtIndex:1]objectForKey:@"ItemList"]]];
str =   [str stringByAppendingFormat:@",%@",[[arrItems objectAtIndex:2]objectForKey:@"ItemList"]]];
NsLog(@"%@",str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...