0

私がやろうとしているのは、NSString に格納されているアンカー タグの内容を抽出することです。

たとえば、次のような文字列があるとします。

<a href="/url?q=https://kindle.amazon.com/&amp;sa=U&amp;ei=GdiWT5uCEI6BhQfihoTzDQ&amp;ved=0CCUQFjAB&amp;usg=AFQjCNEoRolsgoynLNS0H60VWz-9EaQdtw">Amazon <b>Kindle</b>: Welcome</a>

次のようになるように、アンカータグのコンテンツを抽出するにはどうすればよいですか。

https://kindle.amazon.com/&amp;sa=U&amp;ei=GdiWT5uCEI6BhQfihoTzDQ&amp;ved=0CCUQFjAB&amp;usg=AFQjCNEoRolsgoynLNS0H60VWz-9EaQdtw

どんな助けでも大歓迎です!

これは非常に単純なはずですが、私は完全に困惑していますか?以下に投稿された回答は、null を返し続けます。

4

2 に答える 2

0

考えられる解決策の1つは、NSScannerを使用することです-

NSString *urlString = nil;
NSString *htmlString = @"<a href=\"/url?q=https://kindle.amazon.com/&amp;sa=U&amp;ei=GdiWT5uCEI6BhQfihoTzDQ&amp;ved=0CCUQFjAB&amp;usg=AFQjCNEoRolsgoynLNS0H60VWz-9EaQdtw\">Amazon <b>Kindle</b>: Welcome</a>";

NSScanner *scanner = [NSScanner scannerWithString:htmlString];

[scanner scanUpToString:@"<a" intoString:nil];
if (![scanner isAtEnd]) {
    [scanner scanUpToString:@"http" intoString:nil];
    NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString:@">"];
    [scanner scanUpToCharactersFromSet:charset intoString:&urlString];
}
NSLog(@"%@", urlString);

ログ内-https ://kindle.amazon.com/&sa=U&ei=GdiWT5uCEI6BhQfihoTzDQ&ved=0CCUQFjAB&usg=AFQjCNEoRolsgoynLNS0H60VWz-9EaQdtw

于 2012-04-24T17:07:46.930 に答える
0

Lion を要求できる場合は、 を使用できますNSRegularExpression

NSString* stringToSearch = @"<a href=\"/url?q=https://kindle.amazon.com/&amp;sa=U&amp;ei=GdiWT5uCEI6BhQfihoTzDQ&amp;ved=0CCUQFjAB&amp;usg=AFQjCNEoRolsgoynLNS0H60VWz-9EaQdtw\">Amazon <b>Kindle</b>: Welcome</a>";

NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"href\\s*=\\s*\"\\/url\\?q=([^\"]*)\""
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:&error];

NSTextCheckingResult* match = [regex firstMatchInString:stringToSearch options:0 range:NSMakeRange(0, [stringToSearch length])];
if(match.numberOfRanges == 2)
{
    NSRange capture = [match rangeAtIndex:1];
    NSString* URLString = [stringToSearch substringWithRange:capture];
    NSLog(@"%@",URLString);
}
于 2012-04-24T23:55:26.433 に答える