Was ist der schönste Weg, um den Host-Teil eines Uri mit .NET zu ersetzen?
Dh:
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 scheint nicht viel zu helfen.
Wie @Ishmael sagt, können Sie System.UriBuilder verwenden. Hier ist ein Beispiel:
quelle
Uri
Instanz durch Aufrufen zu erhalten ,newUriBuilder.Uri
als sie zu formatieren und zu analysieren.Uri
Eigenschaft ist eine viel bessere Option. Vielen Dank. Aktualisiert..Uri
Anruf. Wenn Sie etwas darin habenUriBuilder
, das nicht zu einem gültigen Uri übersetzt wird, wird es werfen. Wenn Sie beispielsweise einen Platzhalter-Host benötigen*
, können Sie diesen einstellen.Host
, aber wenn Sie ihn aufrufen.Uri
, wird er ausgelöst. Wenn Sie anrufenUriBuilder.ToString()
, wird der Uri mit dem Platzhalter zurückgegeben.