Возьмите текст элемента массива перед элементом, содержащим определенный текст

Я получаю конкретное имя проекта на основе корня папки. Используя код:

private String getProjectName(Scenario scenario) {
    List<String> pathArray = Arrays.asList(Path.of(scenario.getUri()).toUri().getPath().split("/"));
    return pathArray.get(pathArray.size() - 1);
}

Для такой структуры, как показано на скриншоте ниже, это работает. Однако, если будет добавлено более одной папки перед именем файла .feature (номер 9), произойдет сбой.

Моя идея состоит в том, чтобы:

  1. Получить индекс массива, содержащего текст: «функции»
  2. Перейти к следующему индексу (имя проекта) и получить правильный текст + вернуть его

Это хорошая идея?

Лучшая компания по разработке спортивных приложений
Лучшая компания по разработке спортивных приложений
Ищете лучшую компанию по разработке спортивных приложений? Этот список, несомненно, облегчит вашу работу!
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Что такое Java 8 Streams API? Java 8 Stream API
Деревья поиска (Алгоритм4 Заметки к учебнику)
Деревья поиска (Алгоритм4 Заметки к учебнику)
(1) Двоичные деревья поиска: среднее lgN, наихудшее N для вставки и поиска.
0
0
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Поскольку вы не знаете, насколько вложена структура вашей папки, вам нужен некоторый шаблон для распознавания элемента, который, как вы знаете, будет существовать в структуре проекта, в вашем примере с текстом «функции», а затем перейти к следующему индексу. Так что ваша идея кажется мне хорошей.

Любые намеки, как я могу начать с этого?

Kermi 16.02.2023 15:38
Ответ принят как подходящий

Я обновил ваш метод, чтобы вернуть значение разделения после «функций».

private String getProjectName(Scenario scenario) {
    String desiredString = "features";
    String[] pathArray = Path.of(scenario.getUri()).toUri().getPath().split("/");
    for (int i = 0; i < pathArray.length; i++) {
        if (pathArray[i].equals(desiredString)) {
            return (pathArray[i + 1]);
        }
    }

    throw new IllegalArgumentException(String.format("The url provided does not contain <%s>", desiredString));
}

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