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


回答:


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

1
これは、[配列の説明]を呼び出すのと同じことを達成しませんか?
TechZen 2009

10
@TechZen-いいえ、[array description]改行と外側の括弧を挿入するため。
Dave DeLong、

これが選ばれた答えになるはずです!
pixelfreak 2011

56
ここで確認したいだけですがNSString * myString = [array componentsJoinedByString:@""];、これに代わるものとして受け入れられますか?
Mick MacCallum

10
@ 0x7fffffff:配列に「基本」タイプのみが含まれている場合と同等です。複合型の場合は、として文字列化され<ClassName: InstanceAddress>ます。valueForKeyそれは各項目の指定されたプロパティを取得します。この場合、descriptionであるNSString *からプロパティNSObjectそのゲッターそのサブクラスによってオーバーライドすることができます。
jweyrich 2013

32

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

配列に多くの要素がある場合は、最初にすべての要素を(おそらくを使用して-description)文字列に変換-componentsJoinedByString:@""、その後にパラメータとしてwith を使用して連結する方が効率的です。
GeorgSchölly、2009

デバッグしているのでない限り、この方法はDave Delongの方法よりも優先されます。
TechZen 2009

17

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

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には、分割を実行してNSArrayを戻すリバースメソッドcomponentsSeparatedByStringがあります。


10

私は最近、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];
}

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

そして、あなたはdicまたは複数の配列を持っていて、それから以下で使用されます

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

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

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


このコードは質問に答えることがありますが、このコードが質問に答える理由や方法に関する追加のコンテキストを提供すると、長期的な価値が向上します。
ドナルドダック

誠にありがとうございました!
AbdulAziz Rustam Ogli 2017

1

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

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"

-1

私が知る方法は簡単です。

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

n配列ThisのSWIFT言語の内部位置です。Objective Cで動作する可能性があります


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.