Любой небольшой и самый быстрый код для получения аналогичного результата?
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
что вы пытаетесь достичь, это выглядит неаккуратно.
вам нужно имя файла и путь к первым трем каталогам?
Можете ли вы рассказать нам о сценарии использования, возможно, вы что-то пытаетесь, но начинаете не с той ноги. Это похоже на анализ пути из файла
время проверки регулярного выражения
Вам всегда нужен один и тот же результат или вы жестко программируете условия?
Regex - одна из альтернатив. Или java nio api




Во-первых, я бы посоветовал использовать File.java и некоторые помощники из сообщества apache (FilenamesUtils и FileUtils)
Чтобы получить имя файла (или, как вы назвали его «последним»), используйте это.
File myFile = new File ("some\\path\\to\\file.xml");
System.out.println(myFile.getName());
Чтобы получить только имя каталога, используйте это
System.out.println(myFile.getParent());
Как вы ответите на это, если мы не знаем, в чем вопрос?
Я предположил, что он хочет разбить строку абсолютного пути к файлу на 2 строки. Один путь, а другой имя файла. Подумаешь
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);
}
это дает результат, который вы ищете. Я конвертирую строку в массив, а затем манипулирую ею
Каков предполагаемый результат?