从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; } }