首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从C#中的URI字符串获取文件名

从C#中的URI字符串获取文件名
EN

Stack Overflow用户
提问于 2009-07-09 18:07:47
回答 7查看 210.1K关注 0票数 225

我有一个从字符串URI中获取文件名的方法。我能做些什么让它更健壮呢?

代码语言:javascript
复制
private string GetFileName(string hrefLink)
{
    string[] parts = hrefLink.Split('/');
    string fileName = "";

    if (parts.Length > 0)
        fileName = parts[parts.Length - 1];
    else
        fileName = hrefLink;

    return fileName;
}
EN

回答 7

Stack Overflow用户

发布于 2016-11-01 21:37:49

大多数其他答案要么不完整,要么不处理路径(查询字符串/散列)之后的内容。

代码语言:javascript
复制
readonly static Uri SomeBaseUri = new Uri("http://canbeanything");

static string GetFileNameFromUrl(string url)
{
    Uri uri;
    if (!Uri.TryCreate(url, UriKind.Absolute, out uri))
        uri = new Uri(SomeBaseUri, url);

    return Path.GetFileName(uri.LocalPath);
}

测试结果:

代码语言:javascript
复制
GetFileNameFromUrl("");                                         // ""
GetFileNameFromUrl("test");                                     // "test"
GetFileNameFromUrl("test.xml");                                 // "test.xml"
GetFileNameFromUrl("/test.xml");                                // "test.xml"
GetFileNameFromUrl("/test.xml?q=1");                            // "test.xml"
GetFileNameFromUrl("/test.xml?q=1&x=3");                        // "test.xml"
GetFileNameFromUrl("test.xml?q=1&x=3");                         // "test.xml"
GetFileNameFromUrl("http://www.a.com/test.xml?q=1&x=3");        // "test.xml"
GetFileNameFromUrl("http://www.a.com/test.xml?q=1&x=3#aidjsf"); // "test.xml"
GetFileNameFromUrl("http://www.a.com/a/b/c/d");                 // "d"
GetFileNameFromUrl("http://www.a.com/a/b/c/d/e/");              // ""
票数 68
EN

Stack Overflow用户

发布于 2015-09-16 03:26:12

对于http urls,接受的答案是有问题的。此外,Uri.LocalPath还会执行特定于Windows的转换,正如有人指出的那样,它会在其中保留查询字符串。更好的方法是使用Uri.AbsolutePath

对http urls执行此操作的正确方法是:

代码语言:javascript
复制
Uri uri = new Uri(hreflink);
string filename = System.IO.Path.GetFileName(uri.AbsolutePath);
票数 31
EN

Stack Overflow用户

发布于 2017-02-04 03:56:09

我认为这将会满足您的需求:

代码语言:javascript
复制
var uri = new Uri(hreflink);
var filename = uri.Segments.Last();
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1105593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档