私にはこれがあるとしましょうNSString
:@"Country Address Tel:number"
Tel
より前の部分文字列を取得するにはどうすればよいですか? (国の住所) そして、Tel
の後の部分文字列を取得するにはどうすればよいですか? (数)NSStringから特定の単語に到達するまで部分文字列を取得する
18
A
答えて
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];
各部分
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;
}
}
驚くばかりです。ありがとうございました –
"便利な"ソリューションに感謝します。 – Vats