我有一个路径列表,我需要删除每个路径的最后一个目录。
路径:“ 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
没有最后一个目录和文本
答案 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