2013-06-12 100 views
2

Hiee傢伙,獲取文件名和擴展名,並使用子

我有我從中下載數據並將其保存在數據庫幾個圖像網址中的查詢字符串。我使用(imageurl.Split('/'))[(imageurl.Split('/').Length) - 1];來創建文件名。

問題是,有一些URL包含查詢字符串。由於我得到他們的文件名有模式imgname.img_type_extension?somefield=somevalue

我怎麼能得到filename.extension離開查詢字符串從上面的子字符串?

感謝串門...

+1

你試過Path.GetFileNameWithoutExtension()嗎? – David

+0

我有我的網址來自數據庫,而不是從頁面 –

+0

我從來沒有假設它來自eleswhere。 – David

回答

2

如何

var fNameWithQuery = (imageurl.Split('/'))[(imageurl.Split('/').Length) - 1]; 
//get first string from array created by splitting substring on occurence of '?' 
var fNameAndExt = fNameWithQuery.Split('?')[0]; 
+0

中存儲圖像的完整路徑謝謝nakiya ....很好的作品 –

3
var path = imageurl.Split('?')[0]; 
var fileName = Path.GetFileNameWithoutExtension(path); 

編輯:與擴展文件名只是用另外一種方法從Path

var path = imageurl.Split('?')[0]; 
    var fileName = Path.GetFileName(path); 
+0

其實像這樣。不知道System.IO.Path ..每天學點新東西! –

+1

我的印象是,你需要文件名和擴展名,而不是單獨的文件名;) – nakiya

+0

@nakiya好點 - 我以爲我看到「文件名沒有擴展名」的問題:P – tchrikch

1

也許這?

string imgUrl = @"C:\blah.jpg"; //Loaded from DB 
    System.IO.FileInfo f = new System.IO.FileInfo(imgUrl); 
    string fileName = f.Name.Split('.')[0]; 
+0

謝謝onam .... –

2

爲什麼不讓UriBuilder爲您解析?

var url = new UriBuilder("http://x.com/xyz/imgname.img_type_extension?somefield=somevalue"); 
string filename = Path.GetFileName(url.Path); 
+0

或者更好的是,爲什麼不讓'Uri'做解析呢?我的猜測是創建一個簡單的,不可變的'Uri'類型會更高效,但也許不會......? –