从文件路径中的特殊级别提取路径

时间:2019-05-16 12:15:19

标签: c#

我有这样的文件路径:

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

我想使用来自level3的路径。像这样:

level3\level4\level5\text.txt

.Net中有任何功能对我有用吗?

3 个答案:

答案 0 :(得分:2)

使用.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

答案 1 :(得分:1)

尝试一下:

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);
}

答案 2 :(得分:0)

使用删除

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