比较路径列表并检索其中最常见的类似部分

时间:2016-03-29 10:05:05

标签: c# list compare filepath similarity

Ay Folks,

我需要遍历路径列表(从Excel工作表中导入为字符串)并找到最常见的路径的第一部分(D:\ Data \ NeededFolder)。

澄清:

arrListOfPaths{
"D:\Data\NeededFolder\X\XX\File.file",
"D:\Data\NeededFolder\X\XY\File.file",
"D:\Data\NeededFolder\Y\File.file",
"D:\Data\NeededFolder\Z\XZ\XY\File.file"
}

因此,我不知道路径有多长(文件夹层次结构的深度),但我知道我所有路径的某些部分在任何地方都是相同的,但不是哪一个。

感谢您的帮助:)

编辑://已解决

因此@Serge Wautier将我的答案联系起来,而不是我希望的那个,我可以称之为一天:) 代码:

public static string FindCommonPath ( string Separator, List<string> Paths )
        {
            string CommonPath = String.Empty;
            List<string> SeparatedPath = Paths
                .First ( str => str.Length == Paths.Max ( st2 => st2.Length ) )
                .Split ( new string[ ] { Separator }, StringSplitOptions.RemoveEmptyEntries )
                .ToList ( );

            foreach ( string PathSegment in SeparatedPath.AsEnumerable ( ) )
            {
                if ( CommonPath.Length == 0 && Paths.All ( str => str.StartsWith ( PathSegment ) ) )
                {
                    CommonPath = PathSegment;
                }
                else if ( Paths.All ( str => str.StartsWith ( CommonPath + Separator + PathSegment ) ) )
                {
                    CommonPath += Separator + PathSegment;
                }
                else
                {
                    break;
                }
            }

            return CommonPath;
        }

0 个答案:

没有答案