0

你好,

我有一个包含大量文本的 NSString。文本内是一个 iTunes URL。URL 用 BBCode 屏蔽。如何提取纯 URL?

对不起,但我的正则表达式技能真的很糟糕。

文本:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua。在版本 [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 labore 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."); 
}

结果:

链接="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

如果方案始终相同,则可以这样进行:

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

使用两个范围的位置组件来创建一个新的:

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 回答
0

我找到了这个解决方案。

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