如何从objective-c中的字符串中获取url子字符串

ran*_*mor 1 iphone cocoa parsing objective-c

<p><a href="http://vimeo.com/23486376" title="Rebecca Black's Friday on Rock Band"><img src="http://b.vimeocdn.com/ts/152/946/152946954_200.jpg" alt="Rebecca Black's Friday on Rock Band" /></a></p><p></p><p>Cast: <a href="http://vimeo.com/thenerdery" style="color: #2786c2; text-decoration: none;">The Nerdery</a></p>
Run Code Online (Sandbox Code Playgroud)

我有一个像上面的字符串,我想知道Objective-c中获得"http://b.vimeocdn.com/ts/152/946/152946954_200.jpg"子字符串的最佳方法是什么?NSScanner?NSString方法?谢谢!

更新:字符串实际上是:

<p><a href="http://vimeo.com/23333305" title="Ad League Bowling Championship"><img src="http://b.vimeocdn.com/ts/151/787/151787049_200.jpg" alt="Ad League Bowling Championship" /></a></p><p></p><p>Cast: <a href="http://vimeo.com/thenerdery" style="color: #2786c2; text-decoration: none;">The Nerdery</a></p>
Run Code Online (Sandbox Code Playgroud)

Dav*_*ong 5

这是另一种方法:

  • 将字符串转换为实际的HTML.换句话说,将&lt;&gt;东西转换成<>
  • 通过运行它 NSXMLParser
  • 解析器委托中,检查传递给-parser:didStartElement:namespaceURI:qualifiedName:attributes:方法的属性字典.
  • 如果元素名称是@"img",那么attributes字典应该有一个名为@"src"map 的键映射到字符串@"http://b.vimeocdn.com/ts/152/946/152946954_200.jpg".
  • 一旦你有了字符串,将它转换为一个NSURL使用是微不足道的+[NSURL URLWithString:]

无论源HTML如何随时间变化,这都将起作用.建议的其他方法非常脆弱,因为它们依赖于像src小写一样的东西,并且src在字符串中的任何地方只有一个属性(如果你有2个?).你不想解析HTML; 您想从XML元素中获取属性.所以使用内置的方式做到这一点!:)