如何使用split()删除路径中的最后一个目的地?

时间:2019-05-16 13:40:19

标签: java split directory path

我有一个路径列表,我需要删除每个路径的最后一个目录。

路径:“ I:\ Directory_1 \ Directory_2 \ Directory_3-Sometext” 我使用split方法删除了'-'

右侧的所有内容

我尝试过使用split()一次一个地删除,然后将所有内容重新组合到一个字符串中。 我试过在(“ \”)上分割所有内容并使用lenght()

//Removes text after '-'
String [] parts = path.split("-")
String partsA = parts[0]

String [] newParts = partsA.split("\\\\");
String partsB = newParts[newParts.length-1];

partsA = partsA.substring(partsA.length()-partsB.length(),partsA.length()+partsB.length());

我希望输出是

  

\ Directory_1 \ Directory_2

没有最后一个目录和文本

3 个答案:

答案 0 :(得分:5)

您可以使用适当的路径/文件对象来代替使用字符串操作,它还具有可以处理其他类型的路径(例如,诸如/home/directory1之类的unix路径)的其他好处:

String f = "I:\\Directory_1\\Directory_2\\Directory_3-Sometext";
Path p = Paths.get(f);
Path parent = p.getParent();
System.out.println(parent.toString());

答案 1 :(得分:2)

您还可以使用Java的File API:

new File("I:\\Directory_1\\Directory_2\\Directory_3-Sometext").getParent();

这具有独立于操作系统的优点...

答案 2 :(得分:1)

使用:

String directory = "I:\\Directory_1\\Directory_2\\Directory_3-Sometext";
directory.substring(0, directory.lastIndexOf("\\"));

输出:

  

I:\ Directory_1 \ Directory_2