Iphone 如何从objective-c中的字符串获取url子字符串
我得到了上面这样的字符串,我想知道objective-c中获得http://b.vimeocdn.com/ts/152/946/152946954_200.jpg“子串?NSScanner?NSString方法?谢谢 更新:字符串实际上是:Iphone 如何从objective-c中的字符串获取url子字符串,iphone,objective-c,cocoa,parsing,Iphone,Objective C,Cocoa,Parsing,我得到了上面这样的字符串,我想知道objective-c中获得http://b.vimeocdn.com/ts/152/946/152946954_200.jpg“子串?NSScanner?NSString方法?谢谢 更新:字符串实际上是: <p><a href="http://vimeo.com/23486376" title="Rebecca Black's Friday on Rock Band"><img src="http://b.
<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>
假设完整字符串称为myString,则可以执行以下操作:
<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>
我还没有测试过这一点,所以我可以用+5代替+6,所以如果字符串的字符数比您想要的少或多,只需更改最后一行中的数字即可。假设完整的字符串称为myString,您可以执行以下操作:
<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>
NSRange srcRange = [myString rangeOfString:@"src="];
NSRange endrange = [myString rangeOfString:@"\"" options:nil range:
NSMakeRange(srcRange.location + 5, [mystring count] - srcRange.location - 6)];
NSString *url = [myString subStringWithRange:
NSMakeRange(srcRange.location + 5, srcRange.location + 5 + endRange.lenght)];
我还没有测试过,所以我可以用+5代替+6,所以如果字符串的字符数比您想要的少或多,只需更改最后一行中的数字
NSRange srcRange = [myString rangeOfString:@"src="];
NSRange endrange = [myString rangeOfString:@"\"" options:nil range:
NSMakeRange(srcRange.location + 5, [mystring count] - srcRange.location - 6)];
NSString *url = [myString subStringWithRange:
NSMakeRange(srcRange.location + 5, srcRange.location + 5 + endRange.lenght)];
strurimage将是您所需的字符串
strurimage将是您所需的字符串 还有另一种方法:
- 将字符串转换为实际的HTML。换句话说,将
和
内容转换为 - 通过
NSXMLParser运行它
- 在中,检查传递到方法中的属性字典
- 如果元素名为
,则@“img”
字典应具有一个名为属性
的键,该键映射到字符串@“src”
@http://b.vimeocdn.com/ts/152/946/152946954_200.jpg“
- 一旦您有了字符串,就可以使用
将其转换为+[NSURL URLWithString::
NSURL
无论源HTML如何随时间变化,这都将起作用。所建议的其他方法非常脆弱,因为它们依赖于
src
等全小写的东西,并且字符串中的任何地方都只有一个src
属性(如果有2个呢?)。你不想解析HTML;您希望从XML元素中获取属性。因此,请使用内置的方式来执行此操作!:) 还有另一种方法:
- 将字符串转换为实际的HTML。换句话说,将
和
内容转换为 - 通过
NSXMLParser运行它
- 在中,检查传递到方法中的属性字典
- 如果元素名为
,则@“img”
字典应具有一个名为属性
的键,该键映射到字符串@“src”
@http://b.vimeocdn.com/ts/152/946/152946954_200.jpg“
- 一旦您有了字符串,就可以使用
将其转换为+[NSURL URLWithString::
NSURL
无论源HTML如何随时间变化,这都将起作用。所建议的其他方法非常脆弱,因为它们依赖于
src
等全小写的东西,并且字符串中的任何地方都只有一个src
属性(如果有2个呢?)。你不想解析HTML;您希望从XML元素中获取属性。因此,请使用内置的方式来执行此操作!:) 您可以使用框架进行URL检测和解析,例如。当然,在iOS上,您必须静态地构建它,或者将源代码直接构建到您的应用程序中
或者,仅限iOS(当前),使用。数据检测器可以找到URL、物理地址、电话号码等。;您可以告诉它您想要从字符串中得到什么,然后使用它来获取结果。您可以使用一个框架来检测和解析URL,例如。当然,在iOS上,您必须静态地构建它,或者将源代码直接构建到您的应用程序中
或者,仅限iOS(当前),使用。数据检测器可以找到URL、物理地址、电话号码等。;您可以告诉它您希望从字符串中得到什么,然后使用它来获得结果。我想我最终会使用它:`NSString*imgString=[[NSString alloc]init];NSScanner*scanner=[NSScanner scannerWithString:descriptionString];[scanner scanuptString:@“img src=”“intoString:nil];[scanner scanuptString:@“http”intoString:nil];[scanner scanuptString:@“alt”intoString:&imgString];`无论如何,谢谢。如果你能自己找到解决方案,我会非常高兴。我想我最后会用这个来代替:`NSString*imgString=[[NSString alloc]init];NSScanner*scanner=[NSScanner scannerWithString:descriptionString];[scanner scanuptString:@“img src=”“intoString:nil];[scanner scanuptString:@“http”intoString:nil];[scanner scanuptString:@“alt”intoString:&imgString];`无论如何,谢谢。如果你能自己找到解决方案,我会非常高兴。这对我来说更有意义,可能比我的解决方案更有效。谢谢这对我来说更有意义,可能比我的解决方案更有效。谢谢看起来就是这样做的。但最后我还是用了我那又快又脏的方式。谢谢你的回答。看起来就是这样。但最后我还是用了我那又快又脏的方式。谢谢你的回答。