csh*_*net 6 .net c# comparison filenames
可能重复:
确定两个路径引用C#中同一文件的最佳方法
所以我需要比较两个Windows文件名,以确定它们是否相同.一个用户给了我,一个给了我另一个程序.那么你应该如何比较:
C:\Program Files\Application1\APP.EXE C:\Progra~1\Applic~1\APP.EXE C:\program files\applic~1\app.exe
我似乎无法找到一种方法来始终"规范化"路径,我尝试使用Path.GetFullPath(路径)和新的FileInfo(路径).FullName,似乎都没有解决这个问题.
更新:
Path.GetFullPath(path)将更正短到长名称转换但不会规范化大小写.因此需要StringComparer.OrdinalIgnoreCase.Equals(path1,path2).
您将需要Path.GetFullPath()+ 不区分大小写的字符串比较。
运行以下代码:
using System;
using System.IO;
class Test {
static void Main ()
{
//string [] str = new string[] {@"c:\program files\vim\vim72", @"c:\progra~1\vim\vim72"};
string [] str = new string[] {@"c:\program files\Refere~1\microsoft", @"c:\progra~1\Refere~1\microsoft"};
foreach (string s in str) {
// Call s = Environment.ExpandEnvironmentVariables (s) if needed.
Console.WriteLine (Path.GetFullPath (s));
}
}
}
Run Code Online (Sandbox Code Playgroud)
给出:
c:\program files\Reference Assemblies\microsoft
c:\Program Files\Reference Assemblies\microsoft
Run Code Online (Sandbox Code Playgroud)