2012-02-11 62 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

太棒了。感谢 – 2015-01-20 15:46:17

+0

感谢您的“方便”解决方案。 – Vats 2016-05-09 10:20:41

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; 
     } 
} 
相关问题