Відповіді:
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
[array description]
вставляє нові рядки та зовнішні дужки.
NSString * myString = [array componentsJoinedByString:@""];
прийнятна заміна цього?
<ClassName: InstanceAddress>
. valueForKey
Дозволяє отримати вказану властивість для кожного елемента. У цьому випадку description
це NSString *
властивість від NSObject
, чий геть може бути переосмислений його підкласами.
Одним із підходів було б повторення масиву, викликаючи description
повідомлення по кожному елементу:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
[result appendString:[obj description]];
}
NSLog(@"The concatenated string is %@", result);
Іншим підходом було б зробити щось на основі класу кожного елемента:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
if ([obj isKindOfClass:[NSNumber class]])
{
// append something
}
else
{
[result appendString:[obj description]];
}
}
NSLog(@"The concatenated string is %@", result);
Якщо ви хочете комами та іншою стороною інформацією, ви можете просто зробити:
NSString * result = [array description];
-description
) і CONCAT їх після цього , використовуючи -componentsJoinedByString:
з в @""
якості параметра.
Я думаю, що відповідь Санджай майже не було, але я використовував це таким чином
NSArray *myArray = [[NSArray alloc] initWithObjects:@"Hello",@"World", nil];
NSString *greeting = [myArray componentsJoinedByString:@" "];
NSLog(@"%@",greeting);
Вихід:
2015-01-25 08:47:14.830 StringTest[11639:394302] Hello World
Як натякав Санджай - я використовував метод componentsJoinedByString з NSArray , що робить з'єднання і дає вам назад NSString
BTW NSString має зворотний метод компонентиSeparatedByString, який робить розщеплення і повертає вам NSArray назад.
Нещодавно я знайшов справді хороший підручник з рядків Objective-C:
http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/
І я подумав, що це може зацікавити:
Якщо ви хочете розділити рядок на масив, використовуйте метод, який називається componentsSeparatedByString, щоб досягти цього:
NSString *yourString = @"This is a test string";
NSArray *yourWords = [myString componentsSeparatedByString:@" "];
// yourWords is now: [@"This", @"is", @"a", @"test", @"string"]
якщо вам потрібно розділити набір з декількох різних символів, використовуйте компоненти NSStringSeparatedByCharactersInSet:
NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"-/"]
];
// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]
Зауважте, що розділовий рядок не може бути порожнім. Якщо вам потрібно відокремити рядок на його окремі символи, просто переведіть через довжину рядка і перетворіть кожну таблицю в нову рядок:
NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]];
for (int i=0; i < [myString length]; i++) {
NSString *ichar = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]];
[characters addObject:ichar];
}
NSString * str = [componentsJoinedByString:@""];
і у вас є дік або множина масиву, потім використовується нижче
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];
Перший рядок ініціалізує масив з об'єктами. Другий рядок приєднується до всіх елементів цього масиву, додаючи рядок усередині "" і повертає рядок.
Завдання C Рішення
NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"]; // "1-2-3"
Ті, хто шукає рішення в Swift
Якщо масив містить рядки, ви можете використовувати метод приєднання String:
var array = ["1", "2", "3"]
let stringFromArray = "-".join(array) // "1-2-3"
У Swift 2:
var array = ["1", "2", "3"]
let stringFromArray = array.joinWithSeparator("-") // "1-2-3"
У Swift 3 і 4
var array = ["1", "2", "3"]
let stringFromArray = array.joined(separator: "-") // "1-2-3"