【问题标题】:How to remove filename capitalization difference?如何删除文件名大小写差异?
【发布时间】:2012-12-18 19:35:13
【问题描述】:

我遇到了另一个障碍,需要一些帮助: 在 Windows 中,像“A330 amu.jpg”这样的文件名与“a330 amu.jpg”完全相同。在 VB.NET 中,“A330 amu.jpg”与“a330 amu.jpg”不同。有没有办法在 VB.NET 中使 "A330 amu.jpg" = "a330 amu.jpg" 为真?我正在制作一个程序,该程序在程序的 cwd(当前工作目录)中使用 jpg 交叉引用文件夹路径。此外,这不是唯一存在此类差异的实例。还有很多。我也尝试了 str.Contains() 方法,但没有成功。基本上我需要能够像操作系统一样加载文件而不考虑大小写(不区分大小写)。 Python 内置了这个。换句话说:我如何让 vb.net 遵守操作系统本身已经内置的文件系统规则? 谢谢!

【问题讨论】:

标签: .net vb.net file-io visual-studio-2012 filepath


【解决方案1】:

需要指定字符串比较类型:

"Foo".Equals("foo", StringComparison.CurrentCultureIgnoreCase)

如果您不确定如何在您的代码中使用它,请更新您的问题以包含您进行比较的代码示例。

【讨论】:

  • 有没有办法让它遵守当前文件系统的规则,不管发生了什么?例如,在 Windows 中,文件名的缩短版本和全长版本都等同于同一个实际文件。 (顺便说一句,我不会投票给你)
  • @StevenDoggart - 我从来没有遇到过。 kernel32.dll 中有一个GetLongPathName 函数——您可以使用它来处理短名称和长名称(通过将它们全部转换为长名称)。
  • 对。您实际上可以使用Path.GetFullPath,然后将它们与不区分大小写的比较进行比较。但是,这不适用于网络文件共享,并且它假定操作系统始终不区分大小写,但情况可能并非如此。这是一个有趣的问题。我在这里找到了一些有趣的答案:stackoverflow.com/questions/410705/…
  • 史蒂文,您的第一条评论是我想要完成的。如何让 vb.net 接受文件系统的规则?
  • @JoshMentwizzler 没有内置的方法可以做到这一点。但是,您可以弄清楚这一点——请参见此处:stackoverflow.com/questions/430256/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多