C# – Dateiname aus einer URI extrahieren
Manche Lösungen sind so einfach, dass man sie schlicht übersieht. Aus einer Instanz der URI-Klasse wollte ich den verwendeten Dateinamen extrahieren. Dazu nutzte ich eine URI aus folgender Zeichenkette: http://127.0.0.1:80/pfad/index.php?param1=1
. Die URI Klasse selbst liefert jedoch leider nur Werte, die den gesamten Pfad enthalten, also in diesem Fall /pfad/index.php
.
Viele Wege führen nach Rom. Sicher könnte man jetzt mit String.Split, Regex und Co ins Feld ziehen, aber irgendwo in seinen Tiefen muss .NET doch eine geeignete Methode für dieses Problem besitzen. Abhilfe schafft hier die Methode System.IO.Path.GetFileName(string Filename)
. Sie liefert genau das gewünschte Ergebnis, nämlich index.php
.
Da mir diese Methode aber in der URI Klasse fehlt und ich sie dort logischer aufgehoben finde, hier eine klitzekleine Extension-Methode:
namespace System.Net { public static class ExtensionUri { public static string GetFileName(this Uri pUri) { return System.IO.Path.GetFileName(pUri.AbsolutePath); } } }
Oder:
var uri = new Uri(„http://127.0.0.1:80/pfad/index.php?param1=1“);
var file = uri.Segments.LastOrDefault();