2010-08-12 17 views
16

मैं एक स्ट्रिंग में पाठ के रूप में नीचेस्प्लिट एक अलग तार

011597464952,01521545545,454545474,454545444|Hello this is were the message is. 

दिखाया गया है मूल रूप से मैं संदेश जैसे करने के लिए विभिन्न तार में संख्या के प्रत्येक चाहते हैं में स्ट्रिंग

NSString *Number1 = 011597464952 
NSString *Number2 = 01521545545 
etc 
etc 
NSString *Message = Hello this is were the message is. 

मैं होगा कि एक स्ट्रिंग है कि यह सब

उत्तर

45

मैं -[NSString componentsSeparatedByString] का प्रयोग करेंगे:

NSString *str = @"011597464952,01521545545,454545474,454545444|Hello this is were the message is."; 

NSArray *firstSplit = [str componentsSeparatedByString:@"|"]; 
NSAssert(firstSplit.count == 2, @"Oops! Parsed string had more than one |, no message or no numbers."); 
NSString *msg = [firstSplit lastObject]; 
NSArray *numbers = [[firstSplit objectAtIndex:0] componentsSepratedByString:@","]; 

// print out the numbers (as strings) 
for(NSString *currentNumberString in numbers) { 
    NSLog(@"Number: %@", currentNumberString); 
} 
0

करता ऑब्जेक्टिव-सी strtok() है से बाहर विभाजित करना चाहते?

strtok समारोह सीमांकक का एक सेट के आधार पर सबस्ट्रिंग में एक स्ट्रिंग विभाजित होता है। प्रत्येक बाद की कॉल अगली सबस्ट्रिंग देता है।

substr = strtok(original, ",|"); 
while (substr!=NULL) 
{ 
    output[i++]=substr; 
    substr=strtok(NULL, ",|") 
} 
+0

नहीं, लेकिन सी करता है, और के बाद से ऑब्जेक्टिव-सी सी के एक सख्त superset है, उद्देश्य-सी इसे मुफ्त में प्राप्त करता है। – Allyn

+0

आप व्याख्या कर सकते हैं कृपया :) – user393273

+0

मुझे नहीं लगता है कि इस उद्देश्य को ग – user393273

5

NSStringcomponentsSeparatedByString या इसी तरह एपीआई में से एक में देखो।

यदि यह परिणामों के एक ज्ञात तय सेट है, तो आप फिर परिणामी सरणी लेने के लिए और यह की तरह कुछ का उपयोग कर सकते हैं:

NSString *number1 = [array objectAtIndex:0];  
NSString *number2 = [array objectAtIndex:1]; 
... 

यदि यह परिवर्तनशील है, NSArray एपीआई और objectEnumerator विकल्प को देखो।

+0

हाँ मुझे लगता है कि पहले पाया, लेकिन मैं कैसे एक अलग स्ट्रिंग में प्रत्येक सरणी रख सकता हूं? – user393273

+0

मूल पोस्ट के लिए थोड़ा और विवरण जोड़ा गया। – Eric

1
NSMutableArray *strings = [[@"011597464952,01521545545,454545474,454545444|Hello this is were the message is." componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@",|"]] mutableCopy]; 

NString *message = [[strings lastObject] copy]; 
[strings removeLastObject]; 

// strings now contains just the number strings 
// do what you need to do strings and message 

.... 

[strings release]; 
[message release]; 
0

यहाँ एक आसान समारोह मैं का उपयोग करें:

///Return an ARRAY containing the exploded chunk of strings 
///@author: khayrattee 
///@uri: http://7php.com 
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter 
{ 
    return [stringToBeExploded componentsSeparatedByString: delimiter]; 
} 
संबंधित मुद्दे