【问题标题】:extract path from special level in a file path从文件路径中的特殊级别提取路径
【发布时间】:2019-05-16 20:42:23
【问题描述】:

我有这样一个文件路径:

level1\level2\level3\level4\level5\text.txt

我想从level3 获得这条路径。像这样的:

level3\level4\level5\text.txt

.Net 中有什么功能可以为我完成这项工作吗?

【问题讨论】:

  • 你有把level3的值存入一个变量吗?因为此代码有许多变体来检索您所要求的内容。

标签: c#


【解决方案1】:

使用.Substring(startingIndex)的最简单方法。

string path = @"level1\level2\level3\level4\level5\text.txt";
string subPath = path.Substring(path.IndexOf("level3"));

输出:

level3\level4\level5\text.txt

要支持所有级别并使其更通用,您可以尝试类似

    //More general
    int index = path.IndexOf('\\');
    while (index >= 0) {
        Console.WriteLine(path.Substring(index));
        index = path.IndexOf('\\', index + 1);

        //Here on certain level you can use "break;" to get expected string
    }

输出:

\level2\level3\level4\level5\text.txt
\level3\level4\level5\text.txt
\level4\level5\text.txt
\level5\text.txt
\text.txt

POC:.netFiddle

【讨论】:

  • 请注意,这仅适用于第三级的单个名称。我的解决方案更通用一些。
  • @mm8 我更新了我的答案,现在我的答案支持所有级别的子字符串,其逻辑与我过去从level3获取字符串的逻辑相同
  • 我的回答表明没有理由使用 while 循环。
  • 在你的回答中,你需要使用常量来获得准确的水平,就是这样。我使用循环,你使用常量值没有意义在这里战斗我相信。我只是强调了实现 OP 试图实现的目标的不同方法
  • 当然,我不怪你:)
【解决方案2】:

试试这个:

string path = @"level1\level2\level3\level4\level5\text.txt";
int index = path.IndexOf('\\', path.IndexOf('\\') + 1);
string newPath = path.Substring(index + 1);

或者创建一个方法:

private static string RemoveFirstTwoLevels(string path)
{
    //error handling omitted...

    int index = path.IndexOf('\\', path.IndexOf('\\') + 1);
    return path.Substring(index + 1);
}

【讨论】:

    【解决方案3】:

    使用移除

    string path = @"level1\level2\level3\level4\level5\text.txt";
    string subPath = path.Remove( 0, path.IndexOf( "level3" ) );
    

    使用子字符串

    string path = @"level1\level2\level3\level4\level5\text.txt";
    string subPath = path.Substring( path.IndexOf( "level3" ) );
    

    以上两个例子都会输出:

    level3\level4\level5\text.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-01
      • 2011-09-01
      • 2013-06-08
      • 2016-06-19
      • 1970-01-01
      相关资源
      最近更新 更多