检查路径区分大小写

时间:2015-09-01 11:43:39

标签: c# path case-sensitive

我正在尝试将路径转换为规范形式以便比较它们。我几乎在那里,但我坚持使用外壳:

如果路径不区分大小写(即在Windows上),我的最后一步应该是path = path.ToUpper()或ToLower()。在其他系统(即Linux,OSX)上,应跳过此最后一步。

有没有正确的方法来检测这个?

3 个答案:

答案 0 :(得分:4)

您可能正在寻找System.Environment.OSVersion。这也将检测Windows的版本。因此,如果您需要,那么您可以简单地检查版本是否为Windows,然后执行外壳跳过它。

这样的东西
System.OperatingSystem osInfo = System.Environment.OSVersion;
if(osInfo .Contains("Windows"))
{
  //Do casing
}
else
{
  //skip
}

答案 1 :(得分:1)

如果您知道哪些操作系统区分大小写,则可以使用以下方法检查

Environment.OSVersion.Platform

这是一个包含各种操作系统的枚举。然后,您可以使用它来检查是否需要标准化字符串

答案 2 :(得分:0)

您必须正确检测运行代码的操作系统。根据操作系统规则确定正确的策略后。首先看你的方法是正确的。 要确定您正在运行的操作系统,请尝试使用此代码段

var OS = System.Environment.OSVersion;
var platform = OS.Platform;
var version = OS.Version; // or OS.VersionString
var servicePack = OS.ServicePack;
if(platform=="Unix")
{
...
}

这可以让您确定兼容性。 “Platform”的结果是根据System.Runtime.InteropServices库中的以下PlatformID枚举进行的。

// Summary:
//     Identifies the operating system, or platform, supported by an assembly.
[Serializable]
[ComVisible(true)]
public enum PlatformID
{
    // Summary:
    //     The operating system is Win32s. Win32s is a layer that runs on 16-bit versions
    //     of Windows to provide access to 32-bit applications.
    Win32S = 0,
    //
    // Summary:
    //     The operating system is Windows 95 or Windows 98.
    Win32Windows = 1,
    //
    // Summary:
    //     The operating system is Windows NT or later.
    Win32NT = 2,
    //
    // Summary:
    //     The operating system is Windows CE.
    WinCE = 3,
    //
    // Summary:
    //     The operating system is Unix.
    Unix = 4,
    //
    // Summary:
    //     The development platform is Xbox 360.
    Xbox = 5,
    //
    // Summary:
    //     The operating system is Macintosh.
    MacOSX = 6,
}