c#文件路径字符串比较不区分大小写
我想在c#中比较包含文件路径的两个字符串。
但是,因为在ntfs中默认使用不区分大小写的路径,所以我希望字符串比较以相同的方式不区分大小写。
但是,我似乎无法找到有关ntfs如何实际实现其不区分大小写的任何信息。 我想知道的是如何使用ntfs用于文件路径的相同大小写规则对字符串进行不区分大小写的比较。
来自MSDN :
StringComparison.OrdinalIgnoreCase
最好地表示文件系统,注册表项和值以及环境变量的字符串行为。
和:
在解释文件名,cookie或其他任何可能出现“å”等组合的地方时,序数比较仍然提供最透明和最合适的行为。
因此它很简单:
String.Equals(fileNameA, fileNameB, StringComparison.OrdinalIgnoreCase)
(我总是使用静态Equals
调用,以防左操作数为null
)
string path1 = "C:\TEST"; string path2 = "c:\test"; if(path1.ToLower() == path2.ToLower()) MessageBox.Show("True");
你是说这个还是我没有得到这个问题?
我会去的
string.Compare(path1, path2, true) == 0
或者如果你想指定文化:
string.Compare(path1, path2, true, CultureInfo.CurrentCulture) == 0
使用ToUpper每次比较时都会进行无用的内存分配
在比较路径时,路径的分隔符方向也非常重要。 例如:
bool isEqual = String.Equals("myFoldermyFile.xaml", "myFolder/myFile.xaml", StringComparison.OrdinalIgnoreCase);
isEqual
将为false
。
因此需要先修复路径:
private string FixPath(string path) { return path.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) .ToUpperInvariant(); }
虽然这个表达式是true
:
上述就是C#学习教程:c#文件路径字符串比较不区分大小写分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
bool isEqual = String.Equals(FixPath("myFoldermyFile.xaml"), FixPath("myFolder/myFile.xaml"), StringComparison.OrdinalIgnoreCase);
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1014274.html