我有一个包含以下值的参数
String filesTypesallowed =".xsl,.xslx ";
现在我已经在另一个名为filterfile的方法中传递此参数,如下所示,因为您可以看到在方法中我将fileName作为参数之一,我必须获取任何文件名,让我们说它是mite be abc.csv文件,所以我要做的是检查我在参数fileName中获取的文件是否以扩展名.xlsx或.xls结尾然后在那种情况下我必须返回文件名但是除了该扩展名之外说我有一个像ert.csv这样的扩展名的文件然后在这种情况下我必须返回null
请告知如何实现这一目标我在下面显示了创建一个单独的方法
private String filterfile(String fileName , String filesTypesallowed) {
String extension = fileName.substring(fileName.lastIndexOf("."));
String[] allowedExtensions = filesTypesallowed.split(",");
if (Arrays.asList(allowedExtensions).contains(extension)) {
return fileName;
}
return null;
}
但是当扩展带有.xslx扩展名的文件时,上面的方法不起作用,因为我可以看到值allowedExtensions数组如下所示
allowedExtensions = .xls, .xlsx
因此您可以看到.xlsx中存在空间,这会产生问题请告知如何克服此问题
答案 0 :(得分:3)
您的allowedExtensions = .xls, .xlsx
将为您提供space.xlsx
而非.xlsx
,您应该使用\\s+,\\s+
进行拆分,以避免扩展名之间留出额外空格。
答案 1 :(得分:3)
您可以在使用以下语句拆分为数组之前忽略所有空格:
String[] allowedExtensions = filesTypesallowed.replaceAll("\\s+", "").split(",");
TAsk's answer通过在split
方法中使用正则表达式来保存语句和一个String实例化,这很棒!
String[] allowedExtensions = filesTypesallowed.split("\\s+,\\s+");
为避免错误Codebender highlighted in his answer,您甚至可以将其与trim()
结合使用,以删除原始字符串开头或结尾的所有空格:
String[] allowedExtensions = filesTypesallowed.trim().split("\\s+,\\s+");
答案 2 :(得分:1)
在拆分filesTypesallowed
String之前,使用filesTypesallowed.replaceAll("\\s","");
删除所有空格
private String filterfile(String fileName , String filesTypesallowed) {
String extension = fileName.substring(fileName.lastIndexOf("."));
String[] allowedExtensions = filesTypesallowed.replaceAll("\\s","").split(",");
if (Arrays.asList(allowedExtensions).contains(extension)) {
return fileName;
}
return null;
}
答案 3 :(得分:1)
.xlsx
之前没有空格。 String.split()
不会以这种方式工作。
它无法正常工作,因为在您的字符串filesTypesallowed
中,最后会有一个空格。
将您的字符串更改为String filesTypesallowed =".xsl,.xslx";
,它应该有效。