Ответы:
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
), а затем объединить их с -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
Как намекнул Санджай - я использовал метод componentJoinedByString из NSArray, который выполняет соединение и возвращает вас NSString
КСТАТИ NSString имеет обратный метод componentSeparatedByString, который выполняет разбиение и возвращает NSArray .
Недавно я нашел действительно хороший учебник по строкам Objective-C:
http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/
И я подумал, что это может быть интересно
Если вы хотите разделить строку на массив, используйте метод компонентыSeparatedByString для достижения этой цели:
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:@""];
и у вас есть DIC или несколько массивов, то использовали ниже
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"
В Свифте 3 и 4
var array = ["1", "2", "3"]
let stringFromArray = array.joined(separator: "-") // "1-2-3"