我有一个来自文件夹的文件名读取器。文件名被带到一个字符串数组中。我想要的是当我执行此代码段时,我想要的文件名没有其扩展名。但仍然会打印出扩展名。
import java.io.File;
public class Main {
public static void main(String[] args) {
File file=new File("D:\C_App\PDF");
String[] files = file.list();
for(String string : files) {
string.substring(0, string.length());
System.out.println(string);
}
}
}
谁能帮我解决这个问题? 谢谢。
从.
的最后一个索引中获取字符串的子字符串
import java.io.File;
public class Main {
public static void main(String[] args) {
File file=new File("D:\C_App\PDF");
String[] files = file.list();
for(String string : files) {
if(new File(string).isFile){
if (string.lastIndexOf(".") > 0) {
System.out.println(string.substring(0, a.lastIndexOf('.'));
}
else {
System.out.println(string);
}
}
}
}
}
这是解决方案:
public static void main(String[] args) {
File file = new File("D:\SunilKanjar");
String[] files = file.list();
for (String string : files) {
if (string.lastIndexOf(".") > 0) {
System.out.println(string.substring(0, string.lastIndexOf(".")));
}
}
}
要获取不带扩展名的文件名,首先我们需要找到是否有任何扩展名,然后只需要删除扩展名,并且从最后一个开始查找.
。
假设文件名不包含一个以上的.
符号是不准确的。
通过匹配最后一个点 (.
( 和拆分来使用正则表达式,
正则表达式(\.)(?!.*\.)
与最后一个点匹配。
import java.io.File;
public class Main {
public static void main(String[] args) {
File file=new File("D:\C_App\PDF");
String[] files = file.list();
for(String string : files) {
if (!string.isEmpty()) {
System.out.println(string.split("(\.)(?!.*\.)")[0]);
}
}
}