获取文件名和扩展名并使用子字符串删除查询字符串

时间:2013-06-12 07:41:55

标签: c# substring

Hiee伙计们,

我有几个图片网址,我可以从中下载数据并将其保存在db中。我使用(imageurl.Split('/'))[(imageurl.Split('/').Length) - 1];来创建文件名。

问题是,有一些网址包含查询字符串。由于我得到的文件名具有模式imgname.img_type_extension?somefield=somevalue

如何让filename.extension从上面的子串中留下查询字符串?

感谢您停止......

4 个答案:

答案 0 :(得分:3)

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

编辑:对于文件名WITH扩展名,只使用Path

中的其他方法
    var path = imageurl.Split('?')[0];
    var fileName = Path.GetFileName(path);

答案 1 :(得分: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];

答案 2 :(得分:2)

为什么不让UriBuilder为你做解析?

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

答案 3 :(得分:1)

也许这个?

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