2012-02-11 19 views
18

पर पहुंचने तक एनएसएसटींग से एक सबस्ट्रिंग प्राप्त करें, मान लें कि मेरे पास यह NSString: @"Country Address Tel:number" है। मैं कैसे सबस्ट्रिंग Tel से पहले यह है कि प्राप्त करने के लिए कर सकते हैं? (देश एड्रेस) और फिर मैं सबस्ट्रिंग Tel के बाद यह है कि प्राप्त करने के लिए क्या कर सकते हैं कैसे? (संख्या)एक विशिष्ट शब्द

उत्तर

28

उपयोग NSScanner:

NSString *string = @"Country Address Tel:number"; 
NSString *match = @"tel:"; 
NSString *preTel; 
NSString *postTel; 

NSScanner *scanner = [NSScanner scannerWithString:string]; 
[scanner scanUpToString:match intoString:&preTel]; 

[scanner scanString:match intoString:nil]; 
postTel = [string substringFromIndex:scanner.scanLocation]; 

NSLog(@"preTel: %@", preTel); 
NSLog(@"postTel: %@", postTel); 

NSLog उत्पादन:

preTel: देश पता
postTel: संख्या

22

सबसे आसान तरीका है अगर आप सीमांकक पता है, (यह हमेशा है अगर :) आप इस का उपयोग कर सकते हैं:

NSArray *substrings = [myString componentsSeparatedByString:@":"]; 
NSString *first = [substrings objectAtIndex:0]; 
NSString *second = [substrings objectAtIndex:1]; 

कि दो टुकड़ों में अपने स्ट्रिंग विभाजित होगा, और आप के साथ सरणी देना प्रत्येक सबस्ट्रिंग

+0

बहुत बढ़िया। धन्यवाद एक "हैंडी" समाधान के लिए –

+0

धन्यवाद। – Vats

2

यहाँ zaph के जवाब है कि मैं सफलतापूर्वक क्रियान्वित किया है का एक विस्तार है।

-(NSString*)stringBeforeString:(NSString*)match inString:(NSString*)string 
{ 
     if ([string rangeOfString:match].location != NSNotFound) 
     { 
      NSString *preMatch; 

      NSScanner *scanner = [NSScanner scannerWithString:string]; 
        [scanner scanUpToString:match intoString:&preMatch]; 

      return preMatch; 
     } 
     else 
     { 
      return string; 
     } 
} 

-(NSString*)stringAfterString:(NSString*)match inString:(NSString*)string 
{ 
     if ([string rangeOfString:match].location != NSNotFound) 
     { 
      NSScanner *scanner = [NSScanner scannerWithString:string]; 

      [scanner scanUpToString:match intoString:nil]; 

      NSString *postMatch; 

      if(string.length == scanner.scanLocation) 
      { 
        postMatch = [string substringFromIndex:scanner.scanLocation]; 
      } 
      else 
      { 
        postMatch = [string substringFromIndex:scanner.scanLocation + match.length]; 
      } 

      return postMatch; 
     } 
     else 
     { 
      return string; 
     } 
} 
संबंधित मुद्दे