Processing-loadStrings()不区分大小写

Processing-loadStrings()不区分大小写,processing,case-sensitive,case-insensitive,Processing,Case Sensitive,Case Insensitive,是否有任何方法可以在处理过程中加载文本文件,而忽略文件名的大小写?我正在打开多个csv文件,有些文件的扩展名大写为“.csv”,而不是标准的“.csv”,这会导致错误,因为loadStrings()函数区分大小写 String file = sketchPath("test.csv"); String[] array = loadStrings(file); 上面给出了错误: 此文件名为test.CSV而不是test.CSV。重命名文件或更改代码 我需要一种方法,使案件的文件名或扩展名不重要。

是否有任何方法可以在处理过程中加载文本文件,而忽略文件名的大小写?我正在打开多个csv文件,有些文件的扩展名大写为“.csv”,而不是标准的“.csv”,这会导致错误,因为
loadStrings()
函数区分大小写

String file = sketchPath("test.csv");
String[] array = loadStrings(file);
上面给出了错误:

此文件名为test.CSV而不是test.CSV。重命名文件或更改代码


我需要一种方法,使案件的文件名或扩展名不重要。有什么想法吗?

简短回答:没有。文件的大小写敏感度来自操作系统本身

更详细的回答:您可以创建只尝试从多个位置加载的代码

另一种方法是使用Java的
File
类,该类具有列出目录下各种文件的函数,然后遍历它们并找到所需的文件。中提供了更多信息,但可能如下所示:

String[] array = null;
File dir = new File(sketchPath(""));
for(String file : dir.list()){
   if(file.startsWith(yourFileNameHere)){
      array = loadStrings(file);
      break;
   }
}

我还没有测试过这段代码,所以您可能需要稍微使用它,但这是基本的想法。当然,您可能只想提前重命名文件以避免此问题。

为什么不从错误本身获取新文件名?要将错误语句放入
字符串
,我们需要将
loadStrings
包装在
try
catch
语句中

String[]数组;
String file=“heLlo.txt”;
试一试{
//如果一切正常,则加载文件
数组=加载字符串(文件);
}捕获(例外e){
//否则,当我们得到错误时,我们将其存储在字符串中
字符串错误=e.toString();
然后我们需要使用正则表达式从使用
match
的错误语句中获取文件名。正则表达式是
/named([^+])/
(可以假定文件名中没有空格)

String[]matches=match(错误,“命名([^]+)”);
在包含匹配项的数组中,元素为
1
的捕获组。因此,这将是“真实”文件名

String realFile=匹配[1];
最后,我们加载真实文件并将其存储在数组中

array=loadStrings(realFile);
}

当然,如果您愿意,您可以将所有这些都放在一个函数中,这样您就不必在每次加载文件时反复使用这些代码。但很明显,如果您只是提前重命名或检查文件名,这会更容易。

什么是sketchPath和LoadString?您能展示代码吗?抱歉-这是处理代码(基于java构建的ide)。我已经删除了java标记。我认为这一点都不相关,因为您遇到的问题并不取决于文件类型,只是大写谢谢。理解。我可能可以用与上面类似的方式使用File类来处理扩展问题。文件名中不规则的大小写将更加棘手,但我将尝试找到一种在字符串比较中使用“equalsIgnoreCase”的方法,类似于您的示例。我当然会事先重命名这些文件,但它们是软件生成的结果文件,我正在处理数据,因此它不是一个选项。@Chris
equalsIgnoreCase()
函数将与我的generla解决方案配合使用,基本上只需使用它而不是
startsWith()
函数。您还可以编写一个脚本,提前重命名文件:派斯,真的,谢谢。我已经使用了错误字符串,因为目录中包含大量不需要读取的其他文件,所以对它们进行循环是非常低效的。以这种方式利用错误对我有利是一种不好的做法吗?重命名的问题是,这些文件需要继续被原始软件使用,并且需要相应地命名——重新命名它们将是另一层faff@克里斯,我真的不担心这种事情的“效率”。读取目录的文件名不会以任何您可能注意到的方式降低应用程序的速度。是的,在控制流中使用异常是不好的做法。谷歌类似“Java异常控制流”的搜索结果解释了原因。这很公平。是的,明白了——有道理。谢谢你的帮助。事实上,这是一个非常好的主意——我没有想到使用这个错误,谢谢。