我有一个包含以下值的参数
String filesTypesallowed =".xsl,.xslx ";
现在我已经在另一个名为filterfile的方法中传递此参数,如下所示,因为您可以看到在方法中我将fileName作为参数之一,我必须获取任何文件名,让我们说它是mite be abc.csv文件,所以我要做的是检查我在参数fileName中获取的文件是否以扩展名.xlsx或.xls结尾然后在那种情况下我必须返回文件名但是除了该扩展名之外说我有一个像ert.csv这样的扩展名的文件然后在这种情况下我必须返回null
请告知如何实现我的尝试
private String filterfile(String fileName , String filesTypesallowed) {
String s ;
s =fileName.substring(fileName.lastIndexOf("."));
}
答案 0 :(得分:0)
您可以拆分filesTypesallowed
,然后检查扩展名是否为其中任何一个:
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;
}
答案 1 :(得分:0)
您可以拆分数组,然后构建一个Stream
,然后只使用anyMatch
。
示例:
private String filterFile(final String fileName, final String fileTypesAllowed) {
return Stream.of(fileTypesAllowed.trim().split(","))
.anyMatch(ext -> ext.equals(fileName.substring(fileName.lastIndexOf("."))))
? fileName
: null;
}
请注意,我打电话给String.trim
,因为您给我们的示例最后包含一个空格,我不确定它是否是拼写错误...如果您愿意,请将其删除。< / p>
答案 2 :(得分:0)
这个问题有两个关键部分,即获取文件扩展名,并检查字符串是否以任何扩展名结束。
要获取文件扩展名,您需要使用String.split()。如果我们用逗号传递它,它将返回由逗号分隔的部分数组:
package training;
public class Training {
public static void main(String[] args) {
char[][] values = new char[10][10];
int foodSize = 15
for (int i = 1; i <= foodSize; i++) {
int minFood = 0;
int maxFood = 10;
int randNum1 = minFood + (int) (Math.random() * (maxFood - minFood));
int minFoodY = 0;
int maxFoodY = 10;
int randNum2 = minFoodY + (int) (Math.random() * (maxFoodY - minFoodY));
values[randNum1][randNum2] = 'A';
// I've removed the for loop in the line above since it simply does the same thing 15 times and is inefficient
}
// Assign three elements within it.
// Loop over top-level arrays.
for (int i = 0; i < values.length; i++) {
// Loop and display sub-arrays.
char[] sub = values[i];
for (int x = 0; x < sub.length; x++) {
System.out.print(sub[x] + " ");
}
System.out.println();
}
}
}
要检查字符串是否以扩展名结尾,我们需要遍历扩展程序,然后使用String.endsWith()检查它是否以扩展名结尾:
String[] extensions = fileTypesAllowed.split(",");
作为旁注,您的for (String extension: extensions){
if (fileName.endsWith(extension){
return fileName;
}
}
//If we get here, then it doesn't end with any of the extensions
return null;
变量在末尾包含一个空格。您可以使用String.trim()删除它,但理想方法是首先将一个字符串数组传递给函数。将列表作为字符串传递实际上并不是做事的方式。