创建http url字符串

时间:2011-04-16 12:05:00

标签: c#

我需要一个能从url部分返回正确url的函数(比如在浏览器中)

string GetUrl(string actual,string path) {
  return newurl;
}

例如:

GetUrl('http://example.com/a/b/c/a.php','z/x/c/i.php') -> http://example.com/a/b/c/z/x/c/i.php

GetUrl('http://example.com/a/b/c/a.php','/z/x/c/i.php') -> http://example.com/z/x/c/i.php

GetUrl('http://example.com/a/b/c/a.php','i.php') -> http://example.com/a/b/c/i.php

GetUrl('http://example.com/a/b/c/a.php','/o/d.php?b=1') -> http//example.com/o/d.php?b=1

GetUrl('http://example.com/a/a.php','./o/d.php?b=1') -> http//example.com/a/o/d.php?b=1

Anu建议?

4 个答案:

答案 0 :(得分:3)

您需要的是System.UriBuilder类:http://msdn.microsoft.com/en-us/library/system.uribuilder.aspx

CodeProject上还有一个轻量级的解决方案,它不依赖于System.Web:http://www.codeproject.com/KB/aspnet/UrlBuilder.aspx

还有一个查询字符串构建器(但我之前没有尝试过):http://weblogs.asp.net/bradvincent/archive/2008/10/27/helper-class-querystring-builder-chainable.aspx

答案 1 :(得分:1)

 public string ConvertLink(string input)
    {
        //Add http:// to link url
        Regex urlRx = new Regex(@"(?<url>(http(s?):[/][/]|www.)([a-z]|[A-Z]|[0-9]|[/.]|[~])*)", RegexOptions.IgnoreCase);

        MatchCollection matches = urlRx.Matches(input);

        foreach (Match match in matches)
        {
            string url = match.Groups["url"].Value;
            Uri uri = new UriBuilder(url).Uri;
            input = input.Replace(url, uri.AbsoluteUri);
        }
        return input;
    }

代码使用regex定位字符串中的每个链接,然后使用UriBuilder将链接添加到链接(如果不存在)。由于“http://”是默认值,因此如果不存在协议,则会添加它。

答案 2 :(得分:0)

在此链接中,您可以举例说明如何获取URL的域名,使用此链接,您可以将第二部分添加到URL的字符串

http://www.jonasjohn.de/snippets/csharp/extract-domain-name-from-url.htm

我认为这是最好的方法。

见。

答案 3 :(得分:0)

怎么样:

string GetUrl(string actual, string path)
{
    return actual.Substring(0, actual.Length - 4).ToString() + "/" + path;
}