Java 获取存储在字符串数组中的字符串变量的前导空间
我有一个包含以下值的参数Java 获取存储在字符串数组中的字符串变量的前导空间,java,Java,我有一个包含以下值的参数 String filesTypesallowed =".xsl,.xslx "; 现在我已经在另一个名为filterfile的方法中传递了这个参数,如下所示,因为您可以看到,在这个方法中,我得到的文件名是一个参数,在这个参数中,我必须得到任何文件名,假设它是abc.csv文件,所以我要做的是检查我在参数fileName中得到的文件是否以扩展名.xlsx或.xls结尾,在这种情况下,我必须返回文件名,但除了扩展名,让我们假设我得到了一个扩展名为ert.csv的文件,在
String filesTypesallowed =".xsl,.xslx ";
现在我已经在另一个名为filterfile的方法中传递了这个参数,如下所示,因为您可以看到,在这个方法中,我得到的文件名是一个参数,在这个参数中,我必须得到任何文件名,假设它是abc.csv文件,所以我要做的是检查我在参数fileName中得到的文件是否以扩展名.xlsx或.xls结尾,在这种情况下,我必须返回文件名,但除了扩展名,让我们假设我得到了一个扩展名为ert.csv的文件,在这种情况下,我必须返回空值
请告知如何实现这一点,我已经尝试了以下创建seprate方法
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中存在空间,这造成了一个问题。请建议如何克服这个问题。您的
允许扩展=.xls,.xlsx
将给您空间。xlsx
而不是。xlsx
您应该使用\\s+,\\s+
以避免扩展名之间出现额外的空格。在拆分filetypesallowed
字符串之前,请使用filetypesallowed.replaceAll(“\\s”和“”)删除其中的所有空格代码>
.xlsx
前面没有空格String.split()
它不起作用,因为在字符串filesTypesallowed
的末尾有一个空格
将字符串更改为stringfilestypesallowed=“.xsl、.xslx”代码>,它应该可以工作。在使用以下语句拆分为数组之前,可以忽略所有空格:
String[] allowedExtensions = filesTypesallowed.replaceAll("\\s+", "").split(",");
通过在split
方法中使用正则表达式,为您保存一条语句和一个字符串实例化,这太棒了
String[] allowedExtensions = filesTypesallowed.split("\\s+,\\s+");
为了避免错误,您甚至可以将其与trim()
结合使用,以删除原始字符串开头或结尾处的任何空格:
String[] allowedExtensions = filesTypesallowed.trim().split("\\s+,\\s+");
可以使用trim()
删除前导空格和尾随空格。您可以使用此函数。@John这在字符串中是可能的,但这将强制对数组的每个元素进行循环和trim()
,这可能不会简化代码。我甚至不知道split
接受正则表达式+为了节省一个无用的步骤,我错过了结尾。抢手货
String[] allowedExtensions = filesTypesallowed.trim().split("\\s+,\\s+");