Objective-C - 在字符串中查找 URL

发布于 2024-11-07 07:55:48 字数 46 浏览 2 评论 0原文

给定一个大字符串,创建字符串中包含的所有有效 url 的数组的最佳方法是什么?

Given a large string, what is the best way to create an array of all valid urls which are contained within the string?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蒗幽 2024-11-14 07:55:48

无需为此使用 RegexKitLite,因为 iOS 4 Apple 提供了 NSDataDetectorNSRegularExpression 的子类)。

您可以像这样简单地使用它(source 是您的字符串):

NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray* matches = [detector matchesInString:source options:0 range:NSMakeRange(0, [source length])];

No need to use RegexKitLite for this, since iOS 4 Apple provide NSDataDetector (a subclass of NSRegularExpression).

You can use it simply like this (source is your string) :

NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray* matches = [detector matchesInString:source options:0 range:NSMakeRange(0, [source length])];
十年九夏 2024-11-14 07:55:48

我会使用 RegexKitLite 来实现此目的:

#import "RegExKitLite.h"

...

NSString * urlString = @"blah blah blah http://www.google.com blah blah blah http://www.stackoverflow.com blah blah balh http://www.apple.com";
NSArray *urls = [urlString componentsMatchedByRegex:@"http://[^\\s]*"];
NSLog(@"urls: %@", urls);

打印:(

urls: (
    "http://www.google.com",
    "http://www.stackoverflow.com",
    "http://www.apple.com"
)

当然,我在那里使用的 url 正则表达式已简化,但是你明白了。)

I'd use RegexKitLite for this:

#import "RegExKitLite.h"

...

NSString * urlString = @"blah blah blah http://www.google.com blah blah blah http://www.stackoverflow.com blah blah balh http://www.apple.com";
NSArray *urls = [urlString componentsMatchedByRegex:@"http://[^\\s]*"];
NSLog(@"urls: %@", urls);

Prints:

urls: (
    "http://www.google.com",
    "http://www.stackoverflow.com",
    "http://www.apple.com"
)

(Of course, the regex I've used there for urls is simplified, but you get the idea.)

你的他你的她 2024-11-14 07:55:48

这是提取 url 链接的最佳方法。

NSString *url_ = @"dkc://name.com:8080/123;param?id=123&pass=2#fragment";

NSURL *url = [NSURL URLWithString:url_];

NSLog(@"scheme: %@", [url scheme]);

NSLog(@"host: %@", [url host]);

NSLog(@"port: %@", [url port]);

NSLog(@"path: %@", [url path]);

NSLog(@"path components: %@", [url pathComponents]);

NSLog(@"parameterString: %@", [url parameterString]);

NSLog(@"query: %@", [url query]);

NSLog(@"fragment: %@", [url fragment]);

输出:

方案:dkc

主机:name.com

端口:8080

路径:/12345

路径组件:(
“/”,
123) 参数字符串:参数

查询:id=1&pass=2

片段:片段

This is best way to extract url link.

NSString *url_ = @"dkc://name.com:8080/123;param?id=123&pass=2#fragment";

NSURL *url = [NSURL URLWithString:url_];

NSLog(@"scheme: %@", [url scheme]);

NSLog(@"host: %@", [url host]);

NSLog(@"port: %@", [url port]);

NSLog(@"path: %@", [url path]);

NSLog(@"path components: %@", [url pathComponents]);

NSLog(@"parameterString: %@", [url parameterString]);

NSLog(@"query: %@", [url query]);

NSLog(@"fragment: %@", [url fragment]);

Output:

scheme: dkc

host: name.com

port: 8080

path: /12345

path components: (
"/",
123 ) parameterString: param

query: id=1&pass=2

fragment: fragment

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文