{"id":4019,"date":"2014-04-25T09:55:53","date_gmt":"2014-04-25T07:55:53","guid":{"rendered":"https:\/\/www.kolja-engelmann.de\/blog\/?p=4019"},"modified":"2014-04-25T09:55:53","modified_gmt":"2014-04-25T07:55:53","slug":"c-dateiname-aus-einer-uri-extrahieren","status":"publish","type":"post","link":"https:\/\/www.kolja-engelmann.de\/blog\/2014\/04\/c-dateiname-aus-einer-uri-extrahieren\/","title":{"rendered":"C# &#8211; Dateiname aus einer URI extrahieren"},"content":{"rendered":"<p>Manche L\u00f6sungen sind so einfach, dass man sie schlicht \u00fcbersieht. Aus einer Instanz der URI-Klasse wollte ich den verwendeten Dateinamen extrahieren. Dazu nutzte ich eine URI aus folgender Zeichenkette: <code>http:\/\/127.0.0.1:80\/pfad\/index.php?param1=1<\/code>. Die URI Klasse selbst liefert jedoch leider nur Werte, die den gesamten Pfad enthalten, also in diesem Fall <code>\/pfad\/index.php<\/code>.<\/p>\n<p>Viele Wege f\u00fchren nach Rom. Sicher k\u00f6nnte man jetzt mit String.Split, Regex und Co ins Feld ziehen, aber irgendwo in seinen Tiefen muss .NET doch eine geeignete Methode f\u00fcr dieses Problem besitzen.\u00a0Abhilfe schafft hier die Methode\u00a0<code>System.IO.Path.GetFileName(string Filename)<\/code>. Sie liefert genau das gew\u00fcnschte Ergebnis, n\u00e4mlich <code>index.php<\/code>.<\/p>\n<p>Da mir diese Methode aber in der URI Klasse fehlt und ich sie dort logischer aufgehoben finde, hier eine klitzekleine Extension-Methode:<\/p>\n<pre class=\"lang:c# decode:true \">namespace System.Net\r\n{\r\n    public static class ExtensionUri\r\n    {\r\n        public static string GetFileName(this Uri pUri)\r\n        {\r\n            return System.IO.Path.GetFileName(pUri.AbsolutePath);\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Manche L\u00f6sungen sind so einfach, dass man sie schlicht \u00fcbersieht. 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&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":1023,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[38],"tags":[98,39],"class_list":["post-4019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codeschnippsel","tag-net","tag-c"],"jetpack_featured_media_url":"https:\/\/www.kolja-engelmann.de\/blog\/wp-content\/uploads\/2013\/01\/code-snippet.png","jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/posts\/4019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/comments?post=4019"}],"version-history":[{"count":0,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/posts\/4019\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/media\/1023"}],"wp:attachment":[{"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/media?parent=4019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/categories?post=4019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/tags?post=4019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}