Hier gibt es bereits einige gute Antworten. Basierend auf mdsharpe Vorschlag, hier ist eine Erweiterung Methode, die leicht verwendet werden kann, wenn Sie mit Uri-Instanzen umgehen wollen:
using System;
using System.Linq;
public static class UriExtensions
{
public static Uri Append(this Uri uri, params string[] paths)
{
return new Uri(paths.Aggregate(uri.AbsoluteUri, (current, path) => string.Format("{0}/{1}", current.TrimEnd('/'), path.TrimStart('/'))));
}
}
Und Anwendungsbeispiel:
var url = new Uri("http://example.com/subpath/").Append("/part1/", "part2").AbsoluteUri;
Dies führt zu http://example.com/subpath/part1/part2
Wenn Sie statt mit Uris mit Strings arbeiten wollen, führt auch das Folgende zum gleichen Ergebnis, passen Sie es einfach an Ihre Bedürfnisse an:
public string JoinUriSegments(string uri, params string[] segments)
{
if (string.IsNullOrWhiteSpace(uri))
return null;
if (segments == null || segments.Length == 0)
return uri;
return segments.Aggregate(uri, (current, segment) => $"{current.TrimEnd('/')}/{segment.TrimStart('/')}");
}
var uri = JoinUriSegements("http://example.com/subpath/", "/part1/", "part2");