5

配列から文字列を作成しようとしていますが、以下に説明するように、どのように文字列を生成するかには条件があります。

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

これにより、Hello、Worldが出力されます。

ただし、最初のアイテムが空の場合、2番目のアイテムのみを受け取る方法があります。

  1. こんにちは、@""=>こんにちは
  2. @ ""、ワールド=>ワールド
  3. Hello、World => Hello、World
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 に答える