.NET如何比较两个表示文件名的字符串,正确地忽略大小写

Mar*_*cus 17 c# filesystems culture case-insensitive

由于(至少在NTFS)在Windows文件系统不区分大小写,我想比较String fileA,以String fileB这样:

fileA.Equals(fileB, StringComparison.CurrentCultureIgnoreCase)
Run Code Online (Sandbox Code Playgroud)

那么问题就变成我应该使用哪种文化,默认的当前(ui?)文化是否足够?我似乎无法为此目的找到任何BCL方法.

Guf*_*ffa 27

您应该使用StringComparison.OrdinalIgnoreCase,如.NET Framework中使用字符串的最佳实践中所详述(搜索"文件路径"以查找相关部分).

如果您使用文化来匹配字符串,您可能会引用一个名称"häl.gif"和"hal.gif"被视为匹配的名称.

  • 它确实回答了这个问题.不应该使用任何文化.NTFS文件名比较是有序的. (2认同)
  • 似乎得到了http://msdn.microsoft.com/en-us/library/dd465121.aspx的支持 (2认同)

kub*_*003 0

也许你可以尝试这个: http://msdn.microsoft.com/en-us/library/zkcaxw5y.aspx

  • 那使用了当前的文化,所以这与他已经拥有的相同。 (2认同)