【问题标题】:c# exclude hyphen from directory.getdirectoriesc# 从 directory.getdirectories 中排除连字符
【发布时间】:2011-05-31 22:35:57
【问题描述】:

我想使用 Directory.GetDirectories 方法来获取所有包含一些排除项的目录。特别是我需要排除其中有连字符的目录。我已经发现正则表达式不能用作搜索模式。我会使用什么搜索模式?

【问题讨论】:

    标签: c# file-io directory getdirectories


    【解决方案1】:

    也许一个 linq 查询就足够了?

        //query notation
        var result = from d in Directory.GetDirectories(path) 
                     where !d.Contains("-")
                     select d;
        //'dot' notation
        var result2 = Directory.GetDirectories(path)
                      .Where(dir => !dir.Contains("-"));
    

    编辑(更多解释)

    上面的解决方案称为"LINQ to Objects"。这是一种查询实现IEnumerableIEnumerable<T>接口的集合的方法。 GetDirectories 方法返回有资格使用 Linq 的字符串的 Array。网上有很多关于 Linq 的资料。要了解 Linq 的强大功能,请浏览 MSDN 上的这些示例:101 Linq Samples。 BTW Linq 对于从 XML、数据库等各种来源检索数据非常有用。

    【讨论】:

    • 我是一名新的计算机科学专业学生。我不认识很多代码。你能参考一些材料来帮助我理解吗?
    • 如果使用 .NET 4.0,我强烈建议改用 Directory.EnumerateDirectories()
    • @Paul 我附上了更多可能对您有用的信息。
    【解决方案2】:
    System.Collections.ObjectModel.Collection<string> resultDirs=new System.Collections.ObjectModel.Collection<string> ();
                foreach (string  dir in System.IO.Directory.GetDirectories("path"))
                {
                    if (!dir.Contains("-")) resultDirs.Add(dir);
                }
    

    【讨论】:

      【解决方案3】:

      不是 LINQ 方式:

          static void Main(string[] args)
          {
      
              string StartingPath = "c:\\";
      
              List<string> mydirs = new List<string>(); // will contains folders not containing "-"
      
              foreach (string d in Directory.GetDirectories(StartingPath))
              {                               
                  if (!(d.Contains("_")))
                  {
                      mydirs.Add(d);
                  }                
      
                  foreach (string dir in mydirs)
                  {
                      Console.WriteLine(dir);
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-06-12
        • 2015-12-28
        • 1970-01-01
        • 2014-01-31
        • 2013-06-06
        • 2018-08-26
        相关资源
        最近更新 更多