首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中使用正则表达式从完整路径解析文件名

在C#中使用正则表达式从完整路径解析文件名
EN

Stack Overflow用户
提问于 2008-10-21 19:30:20
回答 4查看 45.7K关注 0票数 21

如何在C#中使用正则表达式从完整路径中提取文件名?

假设我有完整的路径C:\CoolDirectory\CoolSubdirectory\CoolFile.txt

如何使用正则表达式的.NET风格退出CoolFile.txt?我并不擅长使用正则表达式,我的RegEx伙伴和我也搞不清楚这一点。

此外,在试图解决这个问题的过程中,我意识到我可以只使用System.IO.Path.GetFileName,但是我不能理解正则表达式的事实只会让我不高兴,它会困扰我,直到我知道答案是什么。

EN

回答 4

Stack Overflow用户

发布于 2008-10-21 19:33:19

为什么一定要使用正则表达式?.NET有专门用于此的内置Path.GetFileName()方法,它可以跨平台和文件系统工作。

票数 38
EN

Stack Overflow用户

发布于 2008-10-21 19:35:15

这里有一种方法:

代码语言:javascript
复制
string filename = Regex.Match(filename, @".*\\([^\\]+$)").Groups[1].Value;

基本上,它匹配从最后一个反斜杠到字符串末尾的所有内容。当然,正如您所提到的,使用Path.GetFileName()要容易得多,并且可以处理许多使用正则表达式很难处理的边缘情况。

票数 7
EN

Stack Overflow用户

发布于 2008-10-21 19:43:41

更短:

代码语言:javascript
复制
string filename = Regex.Match(fullpath, @"[^\\]*$").Value;

或者:

代码语言:javascript
复制
string filename = Regex.Match(fullpath, "[^\\"+System.IO.Path.PathSeparator+"]*$").Value;

不使用Regex

代码语言:javascript
复制
string[] pathparts = fullpath.Split(new []{System.IO.Path.PathSeparator});
string file = pathparts[pathparts.Length-1];

您提到的官方库支持:

代码语言:javascript
复制
string file = System.IO.Path.GetFileName(fullpath);
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/223162

复制
相关文章

相似问题

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