0

こんにちは、

多くのテキストを含む NSString があります。テキストの中に iTunes の URL があります。URL は BBCode でマスクされています。プレーン URL を抽出するにはどうすればよいですか?

申し訳ありませんが、私の正規表現スキルは本当に悪いです。

テキスト:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labe et dolore magna aliquyam erat, sed diam voluptua. ver [itunes link="http://www.example.tld/redirect.php?url=http%3A%2F%2Fitunes.apple.com%2Fde%2Fapp%2Fbaby-monitor-alarm%2Fid331519989%3Fmt%3D8 %26uo%3D4" title="Babyphon"] Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labe et dolore magna aliquyam erat, sed diam voluptua. バージョンで

私の最初の試み:

NSString *regEx = @"(link=?).*"; 
NSString *match = [myText stringByMatching:regEx]; 

if ([match isEqual:@""] == NO) { 
    NSLog(@"Match Ituneslink; %@", match); 
}
else
{ 
    NSLog(@"Not found."); 
}

結果:

link="http://www.appsnight.tv/redirect.php?url=http%3A%2F%2Fitunes.apple.com%2Fde%2Fapp%2Fmare-fernweh%2Fid379051618%3Fmt%3D8%26uo%3D4" タイトル="マーレ"]

時間がかかりすぎます。必要なのは iTunes リンクだけです :-(

4

2 に答える 2

0

私はこの解決策を見つけました。

 NSString *regEx = @"(link=\"?)[a-zA-Z0-9:/.?=%-]*";
 NSString *match = [myText stringByMatching:regEx]; 
于 2010-09-13T14:05:27.387 に答える
0

スキームが常に同じである場合は、次のように進めることができます。

NSRange begin = [myText rangeOfString:@"link="];
NSRange end = [myText rangeOfString:@" title="];

2 つの範囲の位置コンポーネントを使用して、新しい範囲を作成します。

NSRange linkRange;
linkRange.location = begin.location + 6;
linkRange.length = (end.location - 1) - (linkRange.location);

あなたができること:

NSString *myLink = [myText substringWithRange:linkRange];

私はあなたの例のテキストでそれを試していません.オフセット(+6と-1)が間違っている可能性があり、それらを調整する必要があります. それが役立つことを願っています!

于 2010-08-27T15:00:25.307 に答える