gpt4 book ai didi

C# 相交部分匹配

转载 作者:行者123 更新时间:2023-11-30 17:59:23 25 4
gpt4 key购买 nike

大家下午好我正在尝试对 2 个文件夹的内容进行比较,并且我已经完成了它的工作,但我很好奇是否有更好的方法。这是我拥有的:

    static void Main(string[] args)
{
reportDiffs("C:\\similar\\a", "C:\\similar\\b");
Console.WriteLine("--\nPress any key to quit");
Console.ReadKey();
}

public static void reportDiffs(string sourcePath1, string sourcePath2)
{
string[] paths1 = Directory.GetFiles(sourcePath1);
string[] paths2 = Directory.GetFiles(sourcePath2);
string[] fileNames1 = getFileNames(paths1, sourcePath1);
string[] fileNames2 = getFileNames(paths2, sourcePath2);
IEnumerable<string> notIn2 = fileNames1.Except(fileNames2);
IEnumerable<string> notIn1 = fileNames2.Except(fileNames1);
IEnumerable<string> inBoth = fileNames1.Intersect(fileNames2);

printOut("Files not in folder1: ", sourcePath2, notIn1);
printOut("Files not in folder2: ", sourcePath1, notIn2);
printOut("Files found in both: ", "", inBoth);
}

private static string[] getFileNames(string[] currentFiles, string currentPath)
{
string[] currentNames = new string[currentFiles.Length];
int i;

for (i = 0; i < currentNames.Length; i++)
{
currentNames[i] = currentFiles[i].Substring(currentPath.Length);
}
return currentNames;
}

private static void printOut(string headline, string currentPath, IEnumerable<string> fileNames)
{
Console.WriteLine(headline);
foreach (var n in fileNames)
{
Console.WriteLine(currentPath + n);
}
Console.WriteLine("--");
}

感觉好像我错过了一个技巧,并且有一个现有的数组方法,比如 Intersect,我可以将 paths1 和 paths2 传递给它,而不是执行 fileNames1 和 2 步骤,但是,对于我来说,我不能在框架中找到类似的东西。

干杯,山姆

最佳答案

如何使用 Path.GetFilename 方法而不是手动截断路径字符串?

http://msdn.microsoft.com/en-us/library/system.io.path.getfilename.aspx

关于C# 相交部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11240790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com