【问题标题】:How to extract the filename from a path [duplicate]如何从路径中提取文件名[重复]
【发布时间】:2013-08-19 01:49:10
【问题描述】:

我有一个字符串值为/Images/She.jpg。我只想要/images/ 之后的部分,即She.jpg。如何将该部分提取到字符串中?

【问题讨论】:

    标签: c# asp.net .net string


    【解决方案1】:
    string filename = System.IO.Path.GetFileName("/Images/She.jpg");
    

    【讨论】:

    • 你能告诉我如何删除那个文件吗?
    • 可以,你可以使用System.IO.File.Delete的方法删除它。
    • 不过,请确保path 是正确的。
    • 所以它不会删除 fodler 吗?它只删除该文件夹中的文件?抱歉,只是有点混乱..
    • 是的,它只会删除文件,如果要删除文件夹则需要使用System.IO.Directory.Delete
    【解决方案2】:

    如果您正在使用路径,则应使用其他答案。如果它只是您正在使用的纯字符串,则可以使用以下代码:

    string filePath = "/Images/She.jpg";
    string fileName = filePath.Substring(filePath.LastIndexOf("/") + 1);
    

    【讨论】:

    • 即使使用纯字符串,您也应该使用Path 类。如果给你的文件是相对于当前目录的,比如"She.jpg",这里会发生什么?
    【解决方案3】:

    只要您的路径中没有任何太复杂的东西,这将起作用,例如文件名后面的查询参数。

    Path.GetFileName("/Images/She.jpg")
    

    【讨论】:

      【解决方案4】:

      我喜欢之前发布的 GetFileName 答案。

      或者,您可以使用 IndexOf 和 Substring 手动解析字符串。我已经包含了多个变量,因此很容易看到解析字符串的步骤。

      var source = "/images/she.jpg";
      var key = "/images/";
      var target = source.IndexOf(key);
      var start = target + key.Length;
      var length = source.Length - start;
      var result = source.Substring(start, length);
      

      【讨论】:

        【解决方案5】:

        为了好玩,你还可以将字符串拆分成一个数组,然后获取数组中的最后一个元素...

        string path = "/Images/She.jpg";
        string[] arr = path.Split('/');
        string filename = arr[arr.Length - 1];
        

        或者如果你更喜欢单排

        string path = "/Images/She.jpg";
        string filename = path.Split('/').Last();
        

        这将返回

        She.jpg
        

        【讨论】:

          【解决方案6】:

          嗯,你可以从字符串的末尾向后移动。

              private string GetFileName(string path)
              {
                  string filename = null;
          
                  for (int i = (path.Length - 1); i > -1; --i)
                  {
                      if (path[i].ToString() == "/")
                      {
                          for (int x = (i + 1); x < (path.Length); ++x)
                          {
                              filename += path[x];
                          }
          
                          break;
                      }
                  }
          
                  return (filename);
              }
          

          这从字符串的最后一个字符向后工作,直到它遇到'/'。然后,它将“/”后面的所有字符相加并返回给您。

          【讨论】:

          • 多么复杂的方法。
          猜你喜欢
          • 1970-01-01
          • 2016-10-07
          • 2011-04-28
          • 1970-01-01
          • 1970-01-01
          • 2010-10-01
          • 2014-04-08
          相关资源
          最近更新 更多