私は次のような文字列を持っています:
"This is test string http://www.google.com and it is working."
http://www.google.com
上記の文字列からリンク()のみを取得したい。どうすれば入手できますか?
これは次のように機能するはずです。
NSString *test = @"This is test string http://www.google.com and it is working.";
NSString *string = [test stringByAppendingString:@" "];
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"https?://[^ ]* "
options:0
error:&error];
NSArray *matches = [regex matchesInString:string
options:0
range:NSMakeRange(0, [string length])];
for (NSTextCheckingResult *match in matches) {
NSRange matchRange = [match range];
NSString *url = [string substringWithRange:matchRange];
NSLog(@"Found URL: %@", url);
}
NSRegularExpressionの使用に関する詳細については、次を参照してください。
NSStringクラスのドキュメントをご覧ください。特定のサブストリング形式の場所を見つけたり、デリメータでストリングを分割したり、サブストリングを抽出したりするためのメソッドがたくさんあります。
たとえば、上記の例で、文字列に埋め込まれたURLを抽出する場合は、最初に次のコマンドを使用して文字列を分割できます。
NSArray *substrings = [myString componentsSeparatedByString:@" "];
次に、結果の配列でループし、「http」文字列があるかどうかを確認します。
for (int i=0;i<[substrings length];i++) {
NSString aStr = [substrings objectAtIndex:i];
if ([aStr rangeOfString:@"http"].location != NSNotFound) {
NSLog(@"I found a http url:%@", aStr);
}
}
これはCHARMのように機能します。
NSString *totalString = @"This is test string http://www.google.com and it is working.";
NSLog(@"%@", totalString);
NSRange urlStart = [totalString rangeOfString: @"http"];
NSRange urlEnd = [totalString rangeOfString: @".com"];
NSRange resultedMatch = NSMakeRange(urlStart.location, urlEnd.location - urlStart.location + urlEnd.length);
NSString *linkString = [totalString substringWithRange:resultedMatch];
NSLog (@"%@", linkString);