在Uri中replace主机

使用.NETreplaceUri的主机部分的最好方法是什么?

即:

string ReplaceHost(string original, string newHostName); //... string s = ReplaceHost("http://oldhostname/index.html", "newhostname"); Assert.AreEqual("http://newhostname/index.html", s); //... string s = ReplaceHost("http://user:pass@oldhostname/index.html", "newhostname"); Assert.AreEqual("http://user:pass@newhostname/index.html", s); //... string s = ReplaceHost("ftp://user:pass@oldhostname", "newhostname"); Assert.AreEqual("ftp://user:pass@newhostname", s); //etc. 

System.Uri似乎没有什么帮助。

System.UriBuilder是你之后…

 string ReplaceHost(string original, string newHostName) { var builder = new UriBuilder(original); builder.Host = newHostName; return builder.Uri.ToString(); } 

正如@Ishmael所说,你可以使用System.UriBuilder。 这是一个例子:

 // the URI for which you want to change the host name var oldUri = Request.Url; // create a new UriBuilder, which copies all fragments of the source URI var newUriBuilder = new UriBuilder(oldUri); // set the new host (you can set other properties too) newUriBuilder.Host = "newhost.com"; // get a Uri instance from the UriBuilder var newUri = newUriBuilder.Uri;