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