Objective-CでNSArray [@"Apple", @"Pear ", 323, @"Orange"]
を文字列に変換する方法を知りたいです。
Objective-CでNSArray [@"Apple", @"Pear ", 323, @"Orange"]
を文字列に変換する方法を知りたいです。
回答:
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
[array description]
改行と外側の括弧を挿入するため。
NSString * myString = [array componentsJoinedByString:@""];
、これに代わるものとして受け入れられますか?
<ClassName: InstanceAddress>
ます。valueForKey
それは各項目の指定されたプロパティを取得します。この場合、description
であるNSString *
からプロパティNSObject
そのゲッターそのサブクラスによってオーバーライドすることができます。
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 を使用して連結する方が効率的です。
サンジェイの答えはほとんどそこにあったと思いますが、私はそれをこのように使用しました
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があります。
私は最近、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];
}
NSString * str = [componentsJoinedByString:@""];
そして、あなたはdicまたは複数の配列を持っていて、それから以下で使用されます
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];
最初の行は、オブジェクトで配列を初期化します。2行目は、 ""内に文字列を追加することでその配列のすべての要素を結合し、文字列を返します。
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"