当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用C#中的正则表达式从完整路径解析文件名》经验,为你挑选了4个好方法。

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

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

如何使用正则表达式的.NET风格获取CoolFile.txt?我对正则表达式并不是很好,而且我的RegEx伙伴和我无法想出这个.

此外,在尝试解决这个问题的过程中,我意识到我可以使用 System.IO.Path.GetFileName,但事实上我无法弄清楚正则表达式只是让我不开心,它会打扰我,直到我知道答案是什么是.



1> Dour High Ar..:

为什么必须使用正则表达式?.NET具有Path.GetFileName()专门针对此的内置方法,可以跨平台和文件系统工作.


当我发布我的答案时,句子不在那里.
然后随意忽略我.:)

2> bdukes..:
//  using System.Text.RegularExpressions;

/// 
///  Regular expression built for C# on: Tue, Oct 21, 2008, 02:34:30 PM
///  Using Expresso Version: 3.0.2766, http://www.ultrapico.com
///  
///  A description of the regular expression:
///  
///  Any character that is NOT in this class: [\\], any number of repetitions
///  End of line or string
///  
///
/// 
public static Regex regex = new Regex(
      @"[^\\]*$",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );

更新:删除开始斜杠



3> Seth Petry-J..:

这是一种方法:

string filename = Regex.Match(filename, @".*\\([^\\]+$)").Groups[1].Value;

基本上,它匹配最后一个反斜杠和字符串结尾之间的所有内容.当然,正如您所提到的,使用Path.GetFileName()更容易,并且将处理许多边缘情况,这些情况很难处理正则表达式.



4> dlamblin..:

更短:

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);

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有