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);
        }
    }
}

 

Kolja Engelmann

Technikfan, Freizeitprogrammierer, selbsternannter Toolking und vermutlich größter Drachenfan Deutschlands blogged hier die Lösungen zu IT-Problemen die ihm über den Weg laufen, kleine Softwaretools, nostalgische Anfälle und missbraucht das Ganze gern auch mal als privates Tagebuch und Fotoalbum.

Das könnte dich auch interessieren …

Eine Antwort

  1. Sven sagt:

    Oder:
    var uri = new Uri(„http://127.0.0.1:80/pfad/index.php?param1=1“);
    var file = uri.Segments.LastOrDefault();

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert