web-dev-qa-db-ja.com

Objective-CでNSArrayをNSStringに変換する

NSArray[@"Apple", @"Pear ", 323, @"Orange"]Objective-Cの文字列に変換する方法を知りたい。

181
alexyorke
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
530
Dave DeLong

1つのアプローチは、各項目で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];
32
Jason

サンジェイの答えはほとんどそこにあったと思うが、私はそれをこのように使った

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 backを返します。

14
Pranay

私は最近、Objective-C文字列に関する非常に優れたチュートリアルを見つけました。

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];
}
10
MarkP
NSString * str = [componentsJoinedByString:@""];

あなたはDICまたは複数の配列を持っているので、以下を使用します

NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];   
8
Sanjay Kakadiya
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];

最初の行は、オブジェクトで配列を初期化します。 2行目は、 ""内に文字列を追加することにより、その配列のすべての要素を結合し、文字列を返します。

目的のCソリューション

NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"];   // "1-2-3"

Swiftで解決策を探している人

配列に文字列が含まれる場合、文字列の結合方法を使用できます。

var array = ["1", "2", "3"]

let stringFromArray = "-".join(array) // "1-2-3"

In Swift 2:

var array = ["1", "2", "3"]

let stringFromArray = array.joinWithSeparator("-") // "1-2-3"

In Swift 3&4

var array = ["1", "2", "3"]

let stringFromArray = array.joined(separator: "-") // "1-2-3"
0