5

我正在尝试从 Array 创建一个字符串。但是,它应该如何生成是有条件的,如下所述。

NSArray *array=[NSArray arrayWithObjects:@"Hello",@"World",nil];
[array componentsJoinedByString:@","];

这将输出:Hello,World。

但是,如果第一个项目是空的,那么有没有办法接收唯一的第二个。

  1. 你好,@"" => 你好
  2. @"" , 世界 => 世界
  3. 你好,世界 => 你好,世界
4

2 回答 2

13

另一种方法是获取数组的可变副本并删除无效对象。可能是这样的:

NSMutableArray *array = [[NSArray arrayWithObjects:@"",@"World",nil] mutableCopy];
[array removeObject:@""]; // Remove empty strings
[array removeObject:[NSNull null]]; // Or nulls maybe

NSLog(@"%@", [array componentsJoinedByString:@","]);
于 2013-01-16T20:00:12.963 回答
4

您不能将nil值存储在NSArray*中,因此答案是“否”。您需要自己迭代数组,跟踪是否需要添加逗号。

NSMutableString *res = [NSMutableString string];
BOOL first = YES;
for(id item in array) {
    if (id == [NSNull null]) continue;
    // You can optionally check for item to be an empty string here
    if (!first) {
        [res appendString:@", "];
    } else {
        first = NO;
    }
    [res appendFormat:@"%@", item];
}


* nil NS 集合中的值用NSNull对象表示。

于 2013-01-16T19:45:03.740 回答