Как использовать split (), чтобы удалить последний пункт назначения в пути? - PullRequest
2 голосов
/ 16 мая 2019

У меня есть список путей, и мне нужно удалить последний каталог каждого пути.

Путь: «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 ]

5 голосов
/ 16 мая 2019

Вместо использования строковых манипуляций вы можете использовать надлежащие объекты пути / файла, с дополнительным преимуществом, что он может обрабатывать пути других типов (например, путь Unix, такой как /home/directory1):

String f = "I:\\Directory_1\\Directory_2\\Directory_3-Sometext";
Path p = Paths.get(f);
Path parent = p.getParent();
System.out.println(parent.toString());
2 голосов
/ 16 мая 2019

Вы также можете использовать Java File API:

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

Это имеет то преимущество, что независимость от ОС ...

1 голос
/ 16 мая 2019

Использование:

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

, который выводит:

I: \ Directory_1 \ Directory_2

...