Search code examples
c#stringntfscase-insensitivecasing

c# file path string comparison case insensitivity


I would like to compare two strings containing file paths in c#.

However, since in ntfs the default is to use case insensitive paths, I would like the string comparison to be case insensitive in the same way.

However I can't seem to find any information on how ntfs actually implements its case insensitivity. What I would like to know is how to perform a case insensitive comparison of strings using the same casing rules that ntfs uses for file paths.


Solution

  • From MSDN:

    The string behavior of the file system, registry keys and values, and environment variables is best represented by StringComparison.OrdinalIgnoreCase.

    And:

    When interpreting file names, cookies, or anything else where a combination such as "å" can appear, ordinal comparisons still offer the most transparent and fitting behavior.

    Therefore it's simply:

    String.Equals(fileNameA, fileNameB, StringComparison.OrdinalIgnoreCase)
    

    (I always use the static Equals call in case the left operand is null)