从NSString获取一个子string,直到到达一个特定的单词

让我们说我有这个NSString@"Country Address Tel:number" 。 如何获得Tel之前的子string? (国家地址)然后我怎么能得到Tel后的子string? (数)

使用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:号码

最简单的方法是,如果你知道分隔符(如果它总是:),你可以使用这个:

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

那将会把你的string分成两部分,并给每个子string的数组

以下是我已经成功实施的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; } }