检查路径区分大小写
Check path case sensitivity
我正在尝试将路径转换为规范形式以便进行比较。我快到了,但我被外壳困住了:
如果路径不区分大小写(即在 Windows 上),我的最后一步应该类似于 path = path.ToUpper() 或 ToLower()。在其他系统上(即 Linux、OSX),应跳过最后一步。
有没有合适的方法来检测这个?
您必须正确检测 OS 您的代码所在的位置 运行。之后就可以根据OS规则决定正确的策略了。乍一看你的做法是正确的。
要确定您 运行 所在的 os,请尝试此代码段
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,
}
如果您知道 OS 区分大小写,您可以使用以下内容来检查
Environment.OSVersion.Platform
这是一个运行着各种操作系统的枚举。然后您可以使用它来检查是否需要规范化字符串
您可能正在寻找 System.Environment.OSVersion。这也将检测 windows 的版本。所以如果你想要那么你可以简单地检查版本是否是 Windows 然后做套管否则跳过它。
类似
System.OperatingSystem osInfo = System.Environment.OSVersion;
if(osInfo .Contains("Windows"))
{
//Do casing
}
else
{
//skip
}
我正在尝试将路径转换为规范形式以便进行比较。我快到了,但我被外壳困住了:
如果路径不区分大小写(即在 Windows 上),我的最后一步应该类似于 path = path.ToUpper() 或 ToLower()。在其他系统上(即 Linux、OSX),应跳过最后一步。
有没有合适的方法来检测这个?
您必须正确检测 OS 您的代码所在的位置 运行。之后就可以根据OS规则决定正确的策略了。乍一看你的做法是正确的。 要确定您 运行 所在的 os,请尝试此代码段
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,
}
如果您知道 OS 区分大小写,您可以使用以下内容来检查
Environment.OSVersion.Platform
这是一个运行着各种操作系统的枚举。然后您可以使用它来检查是否需要规范化字符串
您可能正在寻找 System.Environment.OSVersion。这也将检测 windows 的版本。所以如果你想要那么你可以简单地检查版本是否是 Windows 然后做套管否则跳过它。
类似
System.OperatingSystem osInfo = System.Environment.OSVersion;
if(osInfo .Contains("Windows"))
{
//Do casing
}
else
{
//skip
}