1

我有一个路径“$/Folder1/Folder2/Folder3/File.xml”我想得到减去“File.xml”的路径,即“$/Folder1/Folder2/Folder3”。

我写了以下方法,

public string GetFilePathFromFolderPath(string serverPath)
    {
        var folders = serverPath.Split('/').ToList();

        folders.RemoveAt(folders.Count - 1);


        return folders.Aggregate(string.Empty,
                                 (current, folder) =>
                                 !string.IsNullOrEmpty(current)
                                     ? string.Format("{0}/{1}", current, folder)
                                     : string.Format("{0}", folder));
    }

有一个更好的方法吗?

我的单元测试工作正常,但我想知道是否有一种简单的方法......

[TestMethod()]
    public void GetRootPathFromConfigFilePath_Validate()
    {
        var t = new Twrar();
        var a = t.GetFilePathFromFolderPath("$/Quan/Maa/CSr/mai.py");
        Assert.IsTrue(a == "$/Quan/Maa/CSr");
    }
4

2 回答 2

1

我假设您的意思是使用“/”作为路径分隔符,即使它是 Windows 的“\”。

Dim s = "$/Quan/Maa/CSr///mai.py"
Console.WriteLine(System.IO.Path.GetDirectoryName(s).Replace("\"c, "/"c))

输出$/Quan/Maa/CSr

以下是 Tarun Arora 的编辑:

对于 C#,这应该是...

public string GetFilePathFromFolderPath(string serverPath)
    {            
        return Path.GetDirectoryName(serverPath).Replace("\\", "/");
    }

我所有的单元测试都通过了这个......

[TestMethod()]
    public void GetRootPathFromConfigFilePath_Validate()
    {
        var t = new TfsWrapper();
        var a = t.GetFilePathFromFolderPath("$/Quan/Maa/CSr/mai.py");

        Assert.IsTrue(a == "$/Quan/Maa/CSr");
    }

    [TestMethod()]
    public void GetRootPathFromConfigFilePath_SmallPath()
    {
        var t = new TfsWrapper();
        var a = t.GetFilePathFromFolderPath("$/Quan/mai.py");

        Assert.IsTrue(a == "$/Quan");
    }

    [TestMethod()]
    public void GetRootPathFromConfigFilePath_RootPath()
    {
        var t = new TfsWrapper();
        var a = t.GetFilePathFromFolderPath("$/mai.py");

        Assert.IsTrue(a == "$");
    }
于 2012-11-18T17:22:28.020 回答
0

我有这个方法:

private static string GetPath(string fullPath)
{
    string file = System.IO.Path.GetFileName(fullPath);
    return fullPath.Replace(file, "");
}
于 2012-11-18T17:47:09.063 回答