如何在java中拆分文件名字符串

如何在java中拆分文件名字符串,java,string,Java,String,在我的javaFx应用程序中,我将mp4名称与png名称进行比较,如果它们相同,将在imageView中呈现。问题是我这样做的方式,它还以文件结尾(.mp4或.png)作为名称,然后说它是不同的。有没有一种方法可以说比较只应该是到最后一个字母之前的?我试着使用split,但它并没有真正起作用 这是我当前的代码: if (listOfFiles[i].getName().contains(imglistOfFiles[j].getName())) { System

在我的javaFx应用程序中,我将mp4名称与png名称进行比较,如果它们相同,将在imageView中呈现。问题是我这样做的方式,它还以文件结尾(.mp4或.png)作为名称,然后说它是不同的。有没有一种方法可以说比较只应该是到最后一个字母之前的?我试着使用split,但它并没有真正起作用

这是我当前的代码:

 if (listOfFiles[i].getName().contains(imglistOfFiles[j].getName())) {
                System.out.println("Identische namen" + imglistOfFiles[j].getName());

            } 

您应该删除文件扩展名部分。您可以使用字符串的
replace()
方法执行此操作:

if (listOfFiles[i].getName().replaceAll("(\\..+)$","").equals
          (imglistOfFiles[j].getName().replaceAll("(\\..+)$",""))) {
    System.out.println("Identische namen" + imglistOfFiles[j].getName().replaceAll("(\\..+)$",""));

} 

regex
“\\..+$”
在文件名的末尾搜索扩展名。

请参阅
字符串
方法:
子字符串(..)
lastIndexOf(..)
。在比较扩展名之前,您基本上希望从文件名中删除扩展名,对吗?也许这会有帮助:嗨,我刚试过,但当我做这个System.out.println(imglistofiles[j].getName().replace(“\\..+$”,”)时,它仍然显示扩展名;if语句仍然失败。嘿,谢谢,现在它的工作原理与我想要的一样。如果文件名类似于
filename.ext
,这是一个很好的答案,但是我看到很多文件的名称类似于
file.name.ext
。我会使用
String::lastIndexOf
。这也会匹配,例如,
file.mp4
file.name.png
,我认为这不是我的本意。您可以使用类似于
replace(“\\.[^\.]+$”,“)