如何在C#中使用正则表达式从完整路径中提取文件名?
假设我有完整的路径C:\CoolDirectory\CoolSubdirectory\CoolFile.txt
。
如何使用正则表达式的.NET风格退出CoolFile.txt?我并不擅长使用正则表达式,我的RegEx伙伴和我也搞不清楚这一点。
此外,在试图解决这个问题的过程中,我意识到我可以只使用System.IO.Path.GetFileName
,但是我不能理解正则表达式的事实只会让我不高兴,它会困扰我,直到我知道答案是什么。
发布于 2008-10-21 19:33:19
为什么一定要使用正则表达式?.NET有专门用于此的内置Path.GetFileName()
方法,它可以跨平台和文件系统工作。
发布于 2008-10-21 19:35:15
这里有一种方法:
string filename = Regex.Match(filename, @".*\\([^\\]+$)").Groups[1].Value;
基本上,它匹配从最后一个反斜杠到字符串末尾的所有内容。当然,正如您所提到的,使用Path.GetFileName()要容易得多,并且可以处理许多使用正则表达式很难处理的边缘情况。
发布于 2008-10-21 19:43:41
更短:
string filename = Regex.Match(fullpath, @"[^\\]*$").Value;
或者:
string filename = Regex.Match(fullpath, "[^\\"+System.IO.Path.PathSeparator+"]*$").Value;
不使用Regex
string[] pathparts = fullpath.Split(new []{System.IO.Path.PathSeparator});
string file = pathparts[pathparts.Length-1];
您提到的官方库支持:
string file = System.IO.Path.GetFileName(fullpath);
https://stackoverflow.com/questions/223162
复制相似问题