c# uri 取文件名_从Uri对象获取文件扩展名或“HasExtension”类型bool C#

本文介绍了如何利用C#的System.IO.Path类的HasExtension方法,结合Uri对象的AbsoluteUri属性,判断一个Uri是否包含文件扩展名。通过示例代码演示了在存在Querystrings的情况下,正确判断Uri扩展名的方法,并讨论了处理可能存在的问题和解决方案。
摘要由CSDN通过智能技术生成

您可以使用

System.IO.Path类的

HasExtension方法来确定Uri的字符串是否具有扩展名。

通过使用Uri对象的AbsoluteUri属性,可以检索表示Uri的完整字符串。将此字符串传递给Path类的HasExtension方法将正确返回一个布尔值,指示Uri是否包含文件扩展名。

将以下代码复制并粘贴到简单的控制台应用程序中,以测试这一点。只有myUri3和myUrl4返回True,这也表明HasExtension方法可以在文件名(和扩展名)之后正确处理附加字符(即Querystrings)。

using System;

using System.IO;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Uri myURI1 = new Uri(@"http://www.somesite.com/");

Uri myURI2 = new Uri(@"http://www.somesite.com/filenoext");

Uri myURI3 = new Uri(@"http://www.somesite.com/filewithext.jpg");

Uri myURI4 = new Uri(@"http://www.somesite.com/filewithext.jpg?q=randomquerystring");

Console.WriteLine("Does myURI1 have an extension: " + Path.HasExtension(myURI1.AbsoluteUri));

Console.WriteLine("Does myURI2 have an extension: " + Path.HasExtension(myURI2.AbsoluteUri));

Console.WriteLine("Does myURI3 have an extension: " + Path.HasExtension(myURI3.AbsoluteUri));

Console.WriteLine("Does myURI4 have an extension: " + Path.HasExtension(myURI4.AbsoluteUri));

Console.ReadLine();

}

}

}

编辑:

根据关于确定扩展程序是否为有效扩展名的问题询问者的编辑,我已经打了一些下面的新代码(复制并粘贴到控制台应用程序中):

using System;

using System.IO;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Uri myUri1 = new Uri("http://www.somesite.com/folder/file.jpg?q=randomquery.string");

string path1 = String.Format("{0}{1}{2}{3}", myUri1.Scheme, Uri.SchemeDelimiter, myUri1.Authority, myUri1.AbsolutePath);

string extension1 = Path.GetExtension(path1);

Console.WriteLine("Extension of myUri1: " + extension1);

Uri myUri2 = new Uri("http://www.somesite.com/folder/?q=randomquerystring");

string path2 = String.Format("{0}{1}{2}{3}", myUri2.Scheme, Uri.SchemeDelimiter, myUri2.Authority, myUri2.AbsolutePath);

string extension2 = Path.GetExtension(path2);

Console.WriteLine("Extension of myUri1: " + extension2);

Console.ReadLine();

}

}

}

这个新代码现在解构Uri对象的所有组成部分(即Scheme – http部分等),并具体删除Uri的任何查询字符串部分。这可以解决Adriano所述的潜在问题,在这个答案的评论中,querystring可能包含一个点字符(从而潜在地搞砸了HasExtension方法)。

一旦Uri被去构造,我们现在可以正确地确定Uri字符串是否具有扩展名,以及该扩展名。

从这里,这只是一个匹配这个扩展与已知有效扩展列表的情况。这部分是.NET框架永远不会给你的东西,因为任何文件扩展名都是有效的(任何应用程序可以弥补它是自己的文件扩展名,如果这样的愿望!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值