用于将URL拆分为其组成部分的正则表达式

时间:2011-05-12 15:32:30

标签: objective-c ios

我正在寻找一种方法将URL拆分为其组成部分,以便我可以处理每个元素。为什么?因为URL是我想要专门处理的iPhone应用程序中的自定义方案。

例如,如果用户使用URL myapp:// section /?id = 123点击链接,我想在方案后使用字符串作为在我的应用中跳转到哪个部分的指示然后拆分key / value表示要向用户显示的子视图。

我猜一个正则表达式会起作用。

3 个答案:

答案 0 :(得分:6)

以下是NSURL类及其用法的示例。

NSURL *url = [NSURL URLWithString:@"foo://name.com:8080/12345;param?foo=1&baa=2#fragment"];

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]);

输出:

scheme: foo
host: name.com
port: 8080
path: /12345
path components: (
    "/",
    12345
)
parameterString: param
query: foo=1&baa=2
fragment: fragment

答案 1 :(得分:1)

查看NSURL的文档;

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html

向下滚动到

Accessing the Parts of the URL

并且看看NSURL在没有正则表达式的情况下可以为你做的所有......

答案 2 :(得分:0)

正则表达式严重矫枉过正。首先在://分割,然后在/分割。

(你可能对使用NSScanner感到厌烦,或者正如Bill Dudney指出的那样,只需使用NSURL;)