如何在java中修剪字符串目录

如何在java中修剪字符串目录,java,string,trim,Java,String,Trim,我正在尝试修剪我的目录,它在java中是字符串格式的。我只需要图像/文件名,并希望在图像之前删除目录。Split 这个答案涵盖了正向斜杠目录和反向斜杠目录 样本输入: C:/hello/myAwesomeImage.png C:\hello\myAwesomeImage.png 前斜杠 String [] myFile = "C:/hello/myAwesomeImage.png".split("/"); // split it String myFileName = myFile[myFil

我正在尝试修剪我的目录,它在java中是字符串格式的。我只需要图像/文件名,并希望在图像之前删除目录。

Split 这个答案涵盖了正向斜杠目录和反向斜杠目录

样本输入:

C:/hello/myAwesomeImage.png
C:\hello\myAwesomeImage.png
前斜杠

String [] myFile = "C:/hello/myAwesomeImage.png".split("/"); // split it
String myFileName = myFile[myFile.length - 1]; // Extract filename
String [] myFile = "C:\hello\myAwesomeImage.png".split("\\"); // split it
String myFileName = myFile[myFile.length - 1]; // Extract filename
反斜杠

String [] myFile = "C:/hello/myAwesomeImage.png".split("/"); // split it
String myFileName = myFile[myFile.length - 1]; // Extract filename
String [] myFile = "C:\hello\myAwesomeImage.png".split("\\"); // split it
String myFileName = myFile[myFile.length - 1]; // Extract filename
输出:
“myAwesomeImage.png”

或者,如果您不想拆分

正则表达式 反斜杠+无扩展名

String myFile = "C:\\hello\\myAwesomeImage.png".matches("[ \\w-]+?(?=\\.)");
 String myFile = "C:\\hello\\myAwesomeImage.png".matches("[ \w-]+\....");
String myFile = "C:/hello/myAwesomeImage.png".matches("[^\/]+(?=\.*$)");
String myFile = "C:/hello/myAwesomeImage.png".matches("[^\/]+(?=\..*$)");
输出:
“myAwesomeImage”

反斜杠+扩展名

String myFile = "C:\\hello\\myAwesomeImage.png".matches("[ \\w-]+?(?=\\.)");
 String myFile = "C:\\hello\\myAwesomeImage.png".matches("[ \w-]+\....");
String myFile = "C:/hello/myAwesomeImage.png".matches("[^\/]+(?=\.*$)");
String myFile = "C:/hello/myAwesomeImage.png".matches("[^\/]+(?=\..*$)");
输出:
“myAwesomeImage.png”

正斜杠+扩展

String myFile = "C:\\hello\\myAwesomeImage.png".matches("[ \\w-]+?(?=\\.)");
 String myFile = "C:\\hello\\myAwesomeImage.png".matches("[ \w-]+\....");
String myFile = "C:/hello/myAwesomeImage.png".matches("[^\/]+(?=\.*$)");
String myFile = "C:/hello/myAwesomeImage.png".matches("[^\/]+(?=\..*$)");
输出:
“myAwesomeImage.png”

正斜杠+无扩展名

String myFile = "C:\\hello\\myAwesomeImage.png".matches("[ \\w-]+?(?=\\.)");
 String myFile = "C:\\hello\\myAwesomeImage.png".matches("[ \w-]+\....");
String myFile = "C:/hello/myAwesomeImage.png".matches("[^\/]+(?=\.*$)");
String myFile = "C:/hello/myAwesomeImage.png".matches("[^\/]+(?=\..*$)");

输出:
“myAwesomeImage”

Java有一个强大的内置文件API。它特别有用

我建议使用此操作而不是字符串操作,其优点包括跨操作系统的可移植性,这些操作系统可能使用/或

File myFile = new File("C:/hello/myAwesomeImage.png");
System.out.println(myFile.getName());
System.out.println(myFile.getParentFile().getName());
System.out.println(myFile.getParentFile().getParent());
输出

myAwesomeImage.png
hello
C:

你试过什么?请提供。欢迎来到stackoverflow。请阅读我认为打开文件流并读取文件内容比字符串操作效率低。尤其是当您有大量文件需要处理时。在这种情况下,我宁愿将它们保留为字符串。上面的代码实际上从未“接触”过磁盘。我每次都会选择不太容易出错的方法。以什么方式容易出错?例如,磁盘可能断开连接,程序崩溃,或者文件不可访问,程序崩溃,或者文件上没有readpermission(我可以继续)。在实现方面容易出错:“[^\/]+(?=\.*$)”vs getName()。请注意,除非调用某些函数,否则使用文件API的上述代码不会访问磁盘。我使用的是Linux而不是windows,上面的新文件(“C:/hello/myAwesomeImage.png”)工作得很好。是的,它工作得很好,但称它为“不容易出错”是一个奇怪的问题,因为在运行时,比可以静态评估的基本stringmanipulation有更多的问题可能会出错。