0

我有一个带有以下文本的 NSString:

You can now download "file.png" from "http://www.example.com/RANDOM.png"

如何使用该字符串中的 URL 创建一个新的 NSString?我想要:

http://www.example.com/RANDOM.png

我通常只会删除开头的文本,但“file.png”可以是任何长度的任何文件名,并且不能被删除stringByReplacingOccurrencesOfString(因为我不知道它是什么)。关于如何删除所有内容直到结束的任何想法from "?谢谢你的帮助。

4

2 回答 2

3
NSRange range = [string rangeOfString:@"from \""];
NSString *URL = [string substringFromIndex:range.location + range.length];

错误检查可能是个好主意(即range.location != NSNotFound)。您还必须"从字符串中删除最后一个,但是有一种substringToIndex:方法结合字符串长度可以做到这一点(我把这个留给你,它微不足道)。

于 2012-07-06T15:55:52.077 回答
1

最好的方法是使用能够识别 url 的正则表达式。这是一个使用来自@gruber 的 URL 匹配 RegEx 的示例,您可能需要根据服务器的实际输出对其进行一些调整:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))" options:NSRegularExpressionAnchorsMatchLines | NSRegularExpressionAllowCommentsAndWhitespace error:NULL];
NSRange range = [regex rangeOfFirstMatchInString:myString options:0 range:NSMakeRange(0, [myString length])];
NSString *URL = [myString substringWithRange:range];
于 2012-07-06T15:57:05.133 回答