Подстрока Java пропускает последние две строки разделителя

Любой небольшой и самый быстрый код для получения аналогичного результата?

public static void main(String[] args) {
    String string = "/abc/def/ghi/jkl/mno/qqq.xml";
    String last = string.substring(string.lastIndexOf('/') + 1);
    String first = string.substring(0, string.lastIndexOf('/'));
    String first1 = first.substring(0, first.lastIndexOf('/'));
    String first2 = first1.substring(0, first1.lastIndexOf('/'));
    System.out.println(last);
    System.out.println(first2);
}

Выход:

qqq.xml
/abc/def/ghi

Каков предполагаемый результат?

Compass 07.05.2018 15:20

что вы пытаетесь достичь, это выглядит неаккуратно.

Suvansh 07.05.2018 15:22

вам нужно имя файла и путь к первым трем каталогам?

thaveethu gce 07.05.2018 15:22

Можете ли вы рассказать нам о сценарии использования, возможно, вы что-то пытаетесь, но начинаете не с той ноги. Это похоже на анализ пути из файла

Lino 07.05.2018 15:23

время проверки регулярного выражения

gvmani 07.05.2018 15:23

Вам всегда нужен один и тот же результат или вы жестко программируете условия?

Adya 07.05.2018 15:23

Regex - одна из альтернатив. Или java nio api

UninformedUser 07.05.2018 15:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
7
48
2

Ответы 2

Во-первых, я бы посоветовал использовать File.java и некоторые помощники из сообщества apache (FilenamesUtils и FileUtils)

Чтобы получить имя файла (или, как вы назвали его «последним»), используйте это.

File myFile = new File ("some\\path\\to\\file.xml");
System.out.println(myFile.getName());

Чтобы получить только имя каталога, используйте это

System.out.println(myFile.getParent());

Как вы ответите на это, если мы не знаем, в чем вопрос?

Gatusko 07.05.2018 15:31

Я предположил, что он хочет разбить строку абсолютного пути к файлу на 2 строки. Один путь, а другой имя файла. Подумаешь

obey 07.05.2018 15:45
public static void main(String[] args) throws IOException {
        String string = "/abc/def/ghi/jkl/mno/qqq.xml";
        String[] arr = string.split("/");
        String first2 = String.join("/", Arrays.copyOfRange(arr,0,4));
        System.out.println(arr[arr.length-1]);
        System.out.println(first2);
    }

это дает результат, который вы ищете. Я конвертирую строку в массив, а затем манипулирую ею

Другие вопросы по теме