在 Objective-C 中将 NSArray 转换为 NSString

我想知道如何在 目标 C中将 NSArray [@"Apple", @"Pear ", 323, @"Orange"]转换为字符串。

194259 次浏览

一种方法是迭代数组,对每个条目调用 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];
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];

我最近发现了一个关于 Objective-C String 的很好的教程:

Http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/

我觉得这个可能有点意思:

如果你想把字符串分割成一个数组,可以使用一个叫做 Component entsPartiatedByString 的方法来实现:

NSString *yourString = @"This is a test string";
NSArray *yourWords = [myString componentsSeparatedByString:@" "];


// yourWords is now: [@"This", @"is", @"a", @"test", @"string"]

如果您需要按照几个不同的字符集进行分割,请使用 NSString 的 Component entsPartiatedByPersontersInSet:

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:@""];

我觉得 Sanjay 的答案差不多了,但是我用这种方式

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

正如 Sanjay 所暗示的-我使用了 NSArray 中的方法 组件 JoinedByString,它可以进行连接并返回 NSString

顺便说一句,NSString有反向的方法 组件分离字符串,做的分裂,给你 NSArray回来。

我知道的方法很简单。

var NSArray_variable = NSArray_Object[n]
var stringVarible = NSArray_variable as String

n是数组中的内部位置 这是 SWIFT 语言。 它可能在 < strong > Objective C 中工作

Swift 3.0解决方案:

let string = array.joined(separator: " ")
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 的 join 方法:

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"