在Objective-C中将NSArray转换为NSString

时间:2009-12-01 20:26:10

标签: objective-c arrays nsstring nsarray

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

9 个答案:

答案 0 :(得分:530)

NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];

答案 1 :(得分:32)

一种方法是迭代数组,在每个项目上调用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];

答案 2 :(得分:14)

我认为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的方法 componentsJoinedByString 进行连接并返回 NSString

BTW NSString 有反向方法 componentsSeparatedByString 进行拆分并返回 NSArray

答案 3 :(得分:10)

我最近发现了一个关于Objective-C Strings的非常好的教程:

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"]

如果你需要拆分一组几个不同的字符,请使用NSString的componentsSeparatedByCharactersInSet:

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];
}

答案 4 :(得分:8)

NSString * str = [componentsJoinedByString:@""];

然后您使用了dic或多个数组,然后使用

NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];   

答案 5 :(得分:1)

NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];

第一行用对象初始化数组。 第二行通过在&#34;&#34;中添加字符串来连接该数组的所有元素。并返回一个字符串。

答案 6 :(得分:0)

客观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"

答案 7 :(得分:-1)

我知道的方式很简单。

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

n是数组中的内部位置 这是SWIFT语言。 它可能适用于目标C

答案 8 :(得分:-1)

Swift 3.0解决方案:

let string = array.joined(separator: " ")