2012-02-11 9 views

答えて

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; 
     } 
} 
関連する問題