【问题标题】:How can i remove the last part in a string如何删除字符串中的最后一部分
【发布时间】:2012-09-01 12:33:18
【问题描述】:

我有一个动态生成的字符串为 /directory/folder/filename.html

如何删除最后一部分,即 /filename.html。

我希望我的输出为 /directory/folder/。

【问题讨论】:

    标签: c# html xml


    【解决方案1】:

    如果你只想要路径部分使用

    string result = Path.GetDirectoryName(inputName);
    

    如果你想要文件名而不是路径

    string result = Path.GetFileName(inputName);
    

    我还看到您使用正斜杠。上述方法将在输出中为您的操作系统提供正确的文件夹分隔符(正斜杠或反斜杠)

    【讨论】:

      【解决方案2】:

      System.IO中使用Path.GetDirectoryName方法:

      string path = "/directory/folder/filename.html";
      path = Path.GetDirectoryName(path);
      

      可能将路径分隔符更改为系统默认值。如果要保留斜线,请改用以下内容:

      path = path.Substring(0, path.LastIndexOf('/'));
      

      【讨论】:

      • 这是一个动态路径,我想删除最后一个分割
      • @pavan 这就是上面代码的作用。如果您需要结束斜线,请使用path.LastIndexOf('/') + 1 或在结果中附加/(或Path.DirectorySeparatorChar)。
      • @pavan 如果您单击答案旁边的绿色勾号,您将获得一些声誉并且该问题被标记为已回答。
      【解决方案3】:

      您可以使用substring不使用 IO 类/方法

      string str = "/directory/folder/filename.html";
      int endIndex = str.LastIndexOf("/");
      endIndex = endIndex !=-1 ? endIndex : 0;
      result = str.Substring(0,endIndex);
      

      【讨论】:

      • 请注意,如果字符串中没有'/',这将中断。
      • 我认为根据 OP 不需要
      • 仅仅因为它适用于提供的单个示例并不意味着它适用于他拥有的每一个实际值。
      • 是的,有可能没有文件夹的文件名,但我假设另一种方式,无论如何更新了我的代码,正如你所指出的那样,我希望它会没事。
      猜你喜欢
      • 2020-04-19
      • 2014-03-28
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      相关资源
      最近更新 更多