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

C# 获取文件名和扩展名,并使用子字符串删除查询字符串,c#,substring,C#,Substring,伙计们 我有几个图像URL,从中下载数据并将其保存在db中。我使用(imageurl.Split('/')[(imageurl.Split('/').Length)-1]创建文件名 问题是,有些URL包含查询字符串。由于我为它们获取的文件名具有patternimgname.img\u type\u扩展名?somefield=somevalue 如何从上面的子字符串中获取filename.extension并保留查询字符串 谢谢你来拜访……怎么样 var fNameWithQuery = (ima

伙计们

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

问题是,有些URL包含查询字符串。由于我为它们获取的文件名具有pattern
imgname.img\u type\u扩展名?somefield=somevalue

如何从上面的子字符串中获取filename.extension并保留查询字符串

谢谢你来拜访……

怎么样

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];
编辑:对于扩展名为的文件名,只需使用
Path

    var path = imageurl.Split('?')[0];
    var fileName = Path.GetFileName(path);
也许是这个

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

为什么不让UriBuilder为您进行解析

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

您是否尝试过Path.GetFileName WithOutExtension()?我的URL来自数据库,而不是页面。我从不认为它来自eleswhere。您是否将文件的完整路径存储在DB中?是的,在AM中。我将图像的完整路径存储在DBA中,实际上与此类似。不知道System.IO.Path。。每天学习新的东西!我的印象是您需要文件名和扩展名,而不仅仅是文件名;)@nakiya的观点很好-我想我在问题中看到了“没有扩展名的文件名”:POr也许更好,为什么不让
Uri
进行解析呢?我的猜测是,更新一个简单的、不可变的
Uri
类型会更有效,但可能不会。。。?
var url = new UriBuilder("http://x.com/xyz/imgname.img_type_extension?somefield=somevalue");
string filename = Path.GetFileName(url.Path);