【问题标题】:Storing names in array without path [duplicate]将名称存储在没有路径的数组中[重复]
【发布时间】:2014-07-24 10:06:36
【问题描述】:

我有以下代码读取给定路径的文件夹名称。

string[] dirNames =(Directory.GetDirectories(@"c:\test\project\"));
foreach(string name in dirNames)
{
   Console.WriteLine(name);
}

问题是 dirNames 数组正在存储带有路径的目录名称。虽然我只想存储目录文件名没有路径。我可以在 foreach 循环中删除它,但我想最初存储在没有路径的数组中。请让我知道如何解决它。 谢谢

【问题讨论】:

  • 您希望它显示projectstest/projects

标签: c# .net


【解决方案1】:

你可以得到一个新的数组(或列表),其中的路径被移除了:

var dirNamesNew = dirNames.Select( x => x.Replace(path,"")).ToArray();

或在一条指令中:

string[] dirNames = (Directory.GetDirectories(path)).Select(x => x.Replace(path,"")).ToArray();

Select 将获取名称,将路径替换为无字符,然后将其转换回数组。

【讨论】:

    【解决方案2】:

    使用Path 类中的GetDirectoryName

      foreach(string name in dirNames)
      {
          Console.WriteLine(Path.GetDirectoryName( name ));
      }
    

    【讨论】:

      【解决方案3】:

      怎么样:

      string[] dirNames = Directory.GetDirectories(@"c:\test\project\").Select(x => Path.GetDirectoryName(x)).ToArray();
      

      【讨论】:

        【解决方案4】:

        尝试创建一个DirectoryInfo 并为每个目录投射名称:

        var onlyDirectoryNames = Directory.GetDirectories(@"c:\test\project\").Select(x => new DirectoryInfo(x).Name)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-09
          • 1970-01-01
          • 2021-05-27
          • 1970-01-01
          • 1970-01-01
          • 2016-04-06
          相关资源
          最近更新 更多