Скажем, у меня есть это NSString
: @"Country Address Tel:number"
.
Как я могу сделать, чтобы получить подстроку, которая до Tel
? (Адрес страны)
И затем Как я могу сделать, чтобы получить подстроку, которая после Tel
? (Число)
Получите подстроку из NSString до получения определенного слова
Ответ 1
Используйте 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: число
Ответ 2
Самый простой способ - если вы знаете разделитель, (если он всегда :
), вы можете использовать это:
NSArray *substrings = [myString componentsSeparatedByString:@":"];
NSString *first = [substrings objectAtIndex:0];
NSString *second = [substrings objectAtIndex:1];
который разделит вашу строку на две части и даст вам массив с каждой подстрокой
Ответ 3
Вот расширение ответа 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;
}
}