Câu trả lời:
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
[array description]
chèn dòng mới và dấu ngoặc đơn bên ngoài.
NSString * myString = [array componentsJoinedByString:@""];
một sự thay thế chấp nhận được cho điều này?
<ClassName: InstanceAddress>
. Làm valueForKey
cho nó lấy thuộc tính được chỉ định cho từng mục. Trong trường hợp này, description
là một thuộc NSString *
tính từ NSObject
, mà getter có thể được ghi đè bởi các lớp con của nó.
Một cách tiếp cận sẽ là lặp lại qua mảng, gọi description
tin nhắn trên mỗi mục:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
[result appendString:[obj description]];
}
NSLog(@"The concatenated string is %@", result);
Một cách tiếp cận khác là làm một cái gì đó dựa trên lớp của từng mặt hàng:
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);
Nếu bạn muốn có dấu phẩy và thông tin không liên quan khác, bạn có thể thực hiện:
NSString * result = [array description];
-description
) và concat họ sau đó sử dụng -componentsJoinedByString:
với @""
là tham số.
Tôi nghĩ câu trả lời của Sanjay đã gần đến nhưng tôi đã sử dụng nó theo cách này
NSArray *myArray = [[NSArray alloc] initWithObjects:@"Hello",@"World", nil];
NSString *greeting = [myArray componentsJoinedByString:@" "];
NSLog(@"%@",greeting);
Đầu ra:
2015-01-25 08:47:14.830 StringTest[11639:394302] Hello World
Như Sanjay đã gợi ý - Tôi đã sử dụng các thành phần phương thứcJoinedByString từ NSArray có tham gia và trả lại cho bạn NSString
BTW NSString có các thành phần phương thức đảo ngượcSeparatedByString thực hiện việc phân tách và trả lại NSArray cho bạn .
Gần đây tôi đã tìm thấy một hướng dẫn thực sự tốt về Chuỗi Objective-C:
http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/
Và tôi nghĩ rằng điều này có thể được quan tâm:
Nếu bạn muốn chia chuỗi thành một mảng, hãy sử dụng một phương thức có tên là thành phầnSeparatedByString để đạt được điều này:
NSString *yourString = @"This is a test string";
NSArray *yourWords = [myString componentsSeparatedByString:@" "];
// yourWords is now: [@"This", @"is", @"a", @"test", @"string"]
nếu bạn cần phân tách trên một tập hợp nhiều ký tự khác nhau, hãy sử dụng các thành phần của NSStringSeparatedByChar characterInset:
NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"-/"]
];
// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]
Tuy nhiên, lưu ý rằng chuỗi phân cách không thể để trống. Nếu bạn cần tách một chuỗi thành các ký tự riêng lẻ của nó, chỉ cần lặp qua chiều dài của chuỗi và chuyển đổi từng char thành một chuỗi mới:
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:@""];
và bạn có dic hoặc nhiều mảng sau đó được sử dụng dưới đây
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];
Dòng đầu tiên khởi tạo một mảng với các đối tượng. Dòng thứ hai kết hợp tất cả các phần tử của mảng đó bằng cách thêm chuỗi bên trong "" và trả về một chuỗi.
Giải pháp khách quan C
NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"]; // "1-2-3"
Những người đang tìm kiếm một giải pháp trong Swift
Nếu mảng chứa chuỗi, bạn có thể sử dụng phương thức nối của Chuỗi:
var array = ["1", "2", "3"]
let stringFromArray = "-".join(array) // "1-2-3"
Trong Swift 2:
var array = ["1", "2", "3"]
let stringFromArray = array.joinWithSeparator("-") // "1-2-3"
Trong Swift 3 & 4
var array = ["1", "2", "3"]
let stringFromArray = array.joined(separator: "-") // "1-2-3"