2009-12-01 12 views
177

मैं सोच रहा हूं कि NSArray[@"Apple", @"Pear ", 323, @"Orange"] को उद्देश्य-सी में एक स्ट्रिंग में कैसे परिवर्तित करें।उद्देश्य-सी में NSArray को एनएसएसटींग में कनवर्ट करें

+1

[एनएसएआरआरए को एनएसएआरएआरए से अलग एनएसएसटींग को परिवर्तित करें] (http://stackoverflow.com/a/8204215/194544) – beryllium

+43

@beryllium उस प्रश्न को मेरे प्रश्न के बाद दो * साल * पूछा गया था। – alexy13

उत्तर

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

क्या यह [सरणी विवरण] को कॉल करने जैसा ही काम नहीं करेगा? – TechZen

+7

@TechZen - नहीं, क्योंकि '[सरणी विवरण] 'न्यूलाइन और बाहरी कोष्ठक डालता है। –

+0

यह चुना गया उत्तर होना चाहिए! – pixelfreak

32

एक दृष्टिकोण प्रत्येक आइटम पर 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]; 
+0

यदि सरणी में कई तत्व हैं तो पहले सभी तत्वों को स्ट्रिंग्स (शायद '-डिस्क्रिप्शन' का उपयोग करके) में परिवर्तित करने के लिए और अधिक कुशल हो सकता है और उसके बाद' -componentsJoinedByString: ''पैरामीटर के रूप में' '' का उपयोग करके उन्हें सम्मिलित किया जा सकता है। –

+0

मैं इस विधि के साथ डेव डेलोंग द्वारा एक के साथ जाऊंगा जब तक कि आप बस डिबगिंग न करें। – TechZen

10

मैं हाल ही में ऑब्जेक्टिव-सी तार पर एक बहुत अच्छी ट्यूटोरियल पाया:

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

अगर आप कई अलग अलग charact के एक सेट पर विभाजित करने की आवश्यकता ईआरएस, 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]; 
} 
8
NSString * str = [componentsJoinedByString:@""]; 

और आप डीआईसी या एकाधिक सरणी है तो

bellow इस्तेमाल किया
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""]; 
12

मुझे लगता है कि संजय के जवाब लगभग वहाँ था, लेकिन मैं इसे इस तरह से इस्तेमाल किया

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 

संजय के रूप में संकेत दिया था - मैं NSArray कि शामिल होने करता है से विधि componentsJoinedByString का इस्तेमाल किया और तुम वापस देता NSString

BTW NSString रिवर्स विधि componentsSeparatedByString करता है कि है विभाजन और आपको NSArray वापस देता है।

-1

जिस तरह से मुझे पता है वह आसान है।

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

n सरणी में स्विफ्ट भाषा इस में आंतरिक स्थिति है। यह उद्देश्य सी में काम कर सकते हैं

-1

स्विफ्ट 3.0 समाधान:

let string = array.joined(separator: ",") 
1
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil]; 
NSString *stringFromArray = [array componentsJoinedByString:@" "]; 

पहली पंक्ति वस्तुओं के साथ एक सरणी initializes। दूसरी पंक्ति स्ट्रिंग को "" के अंदर जोड़कर उस सरणी के सभी तत्वों में शामिल हो जाती है और एक स्ट्रिंग देता है।

+0

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, इस सवाल का जवाब देने के तरीके के बारे में अतिरिक्त संदर्भ प्रदान करना और/या कैसे यह दीर्घकालिक मूल्य में सुधार करता है। –

+0

ईमानदारी से आपकी सलाह के लिए धन्यवाद! –

संबंधित मुद्दे