我的需求是解析 Http Urls 并根据需要调用函数。在我当前的实现中,我正在使用嵌套的 if-else 语句,我认为这不是最优化的方式。你能否提供一些其他有效的方法?
这些 Urls 如下:
server/func1
server/func1/SubFunc1
server/func1/SubFunc2
server/func2/SubFunc1
server/func2/SubFunc2
Uri myUri = new Uri("http://server:8080/func2/SubFunc2?query=somevalue");
// Get host part (host name or address and port). Returns "server:8080".
string hostpart = myUri.Authority;
// Get path and query string parts. Returns "/func2/SubFunc2?query=somevalue".
string pathpart = myUri.PathAndQuery;
// Get path components. Trailing separators. Returns { "/", "func2/", "sunFunc2" }.
string[] pathsegments = myUri.Segments;
// Get query string. Returns "?query=somevalue".
string querystring = myUri.Query;
这可能有点晚了,但我最近发现自己正在尝试解析一些URL,并且我使用了Uri
和System.Web.HttpUtility
的组合,就像这里所看到的那样。我的URL类似于http://one-domain.com/some/segments/{param1}?param2=x....
,所以我做了以下操作:
var uri = new Uri(myUrl);
string param1 = uri.Segments.Last();
var parameters = HttpUtility.ParseQueryString(uri.Query);
string param2 = parameters["param2"];
字符串
,在处理片段时要特别小心。Uri playlistUri = (Uri)e.Parameter;
string youtubePlaylistUnParsed = playlistUri.Query;
char delimiterChar = '=';
string[] sections = youtubePlaylistUnParsed.Split(delimiterChar);
string YoutubePlaylist = sections[1];
switch
是一个选择,使用表查找也是一个选择。但是如果没有更多关于你正在做什么的信息,就不可能给出任何建议。 - Jim Mischel