在给定完整URL的情况下,我需要在C或Objective-C中使用一种方法来分隔URI和Path。
示例:
给定URL
mms://a11.l412923342423.c658546.g.lm.akamaistream.net/D/13/414392/v0001/reflector:36751
获取URL很简单,但如何在C或Objective-C中确定URI的结束位置和路径的起始位置?
我知道URI是a11.l412923342423.c658546.g.lm.akamaistream.net
,路径是D/13/414392/v0001/reflector:36751
,但是如何以编程方式识别?
我无法弄明白,任何示例代码都会对我有所帮助。谢谢。
答案 0 :(得分:3)
看起来//
表示URI的开头,后续/
表示路径的开头:
char *uri_start; // Start of URI
int uri_length; // Length of URI
char *path_start; // Start of Path (until end of string)
uri_start = strstr(url, "//");
if (uri_start == NULL) {
uri_start = url;
} else {
uri_start += 2; // skip "//"
}
path_start = strstr(uri_start, "/");
if (path_start == NULL) {
path_start = ""; // Path empty
uri_length = strlen(uri_start);
} else {
path_start += 1; // skip "/"
uri_length = path_start - uri_start - 1;
}
修改强> 复制uri:
char uri[300]; // or char *uri = malloc(uri_length + 1);
memcpy(uri, uri_start, uri_length); // Copy the uri
uri[uri_length] = '\0'; // nul-terminate the uri string
或(如果可以,改变原始字符串):
uri_start[uri_length] = '\0'; // nul-terminates the uri but alters the url
答案 1 :(得分:2)
可以在URL中查找第三个SLASH,甚至可以测试第一个和第二个SLASH是否连续。
答案 2 :(得分:2)
NSURL
个对象上有很多属性可以提供URL的各个组件。你尝试过使用它们吗?