ฉันสงสัยว่าจะแปลงNSArray [@"Apple", @"Pear ", 323, @"Orange"]
เป็นสตริงในObjective-Cได้อย่างไร
ฉันสงสัยว่าจะแปลงNSArray [@"Apple", @"Pear ", 323, @"Orange"]
เป็นสตริงในObjective-Cได้อย่างไร
คำตอบ:
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
[array description]
แทรกบรรทัดใหม่และวงเล็บด้านนอก
NSString * myString = [array componentsJoinedByString:@""];
สิ่งทดแทนที่ยอมรับได้สำหรับสิ่งนี้หรือไม่?
<ClassName: InstanceAddress>
พวกเขาเป็น valueForKey
ทำให้มันดึงคุณสมบัติที่ระบุสำหรับแต่ละรายการ ในกรณีdescription
นี้เป็นNSString *
คุณสมบัติจากNSObject
ซึ่ง getter สามารถถูกแทนที่ด้วยคลาสย่อย
วิธีหนึ่งที่จะทำซ้ำในอาร์เรย์เรียก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
) และ concat พวกเขาหลังจากที่ใช้-componentsJoinedByString:
กับ@""
เป็นพารามิเตอร์
ฉันคิดว่าคำตอบของ Sanjay เกือบจะอยู่ที่นั่น แต่ฉันก็ใช้วิธีนี้
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 ได้บอกใบ้ - ฉันใช้วิธีการcomponentJoinedByStringจาก NSArray ที่เข้าร่วมและให้คืนNSString
BTW NSStringมีการแยกส่วนประกอบของเมธอดSeparatedByStringที่แยกและให้NSArrayกลับมา
ฉันเพิ่งพบการสอนที่ดีมากเกี่ยวกับ Objective-C Strings:
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"]
หากคุณต้องการแยกชุดอักขระที่แตกต่างกันหลายชุดให้ใช้ส่วนประกอบของ NSStringSeparatedByCharactersInSet:
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:@" "];
บรรทัดแรกเริ่มต้นอาร์เรย์ด้วยวัตถุ บรรทัดที่สองรวมองค์ประกอบทั้งหมดของอาร์เรย์นั้นด้วยการเพิ่มสตริงภายใน "" และส่งคืนสตริง
Objective C Solution
NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"]; // "1-2-3"
ผู้ที่กำลังมองหาทางออก Swift
หากอาร์เรย์มีสตริงคุณสามารถใช้วิธีการเข้าร่วมของ String:
var array = ["1", "2", "3"]
let stringFromArray = "-".join(array) // "1-2-3"
ในสวิฟต์ 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"
วิธีที่ฉันรู้นั้นง่าย
var NSArray_variable = NSArray_Object[n]
var stringVarible = NSArray_variable as String
n
เป็นตำแหน่งภายในของอาเรย์นี้ในภาษา SWIFT มันอาจทำงานในObjective C
โซลูชัน Swift 3.0:
let string = array.joined(separator: " ")