Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取存储在字符串数组中的字符串变量的前导空间_Java - Fatal编程技术网

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+");