我的 .NET 应用程序的一部分需要接受输入字符串(表示 URI)并仅返回文件名(如果适用,还需要扩展名)。
现在Path.GetFileName
对于大多数路径都可以做到这一点,除了以下例外:如果输入字符串是一个仅由域名(例如 example.com)和端口号(例如 10210)组成的 HTTP 路径,则GetFileName
返回端口号。
用简单的英语:输入字符串是http://example.com:10210
,它是一个链接到互联网广播流的 URI。当Path.GetFileName
使用该值调用时,返回值为10210
.
这是预期的行为吗?我不记得有任何用冒号分隔路径段的平台。返回值不应该是String.Empty
吗?
编辑
看起来干净的解决方案将是 和 之间的混搭Uri.LocalPath
,System.Web.VirtualPathUtility.GetFileName
但这意味着将您的项目从客户端配置文件重新定位到完整框架。
我想我会在最后一个正斜杠符号之前(包括)删除所有内容。无论如何,分隔符在我的场景中永远不会改变。这样做会给我example.com:10210
作为返回值,这对我正在做的事情很有意义。