Обновление пути

  • 10
  • Недоступна
Реализуй метод changePath(String, String) так, чтобы он заменял версию jdk в пути, полученном первым параметром метода, на версию, полученную вторым параметром, и возвращал новый путь. Версия jdk начинается со строки "jdk" и заканчивается на "/". Пример: путь - "/usr/java/jdk1.8/bin/" версия jdk - "jdk-13"
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (44)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #2866183
Уровень 10, Москва, Russian Federation
27 ноября, 09:01
Я не понимаю, почему нельзя написать и использовать нормальные методы )) а не какие то кривые методы с номерами индексов, заменой индексов и прочей лабудой. Неужели в таком могучем java никто не смог организовать поиск в строках и замену... в одну строку ппц.
Aleksei Reinsalu
Уровень 18, Таллинн, Эстония
24 ноября, 19:21
Знаете, как проще всего уронить правильное решение? /usr/java/jdk Наслаждайтесь :) Прочитайте мой вопрос в "помощь сообщества", если нужны подробности.
Артем Горин Software Developer в noname
10 ноября, 07:16
return path.replaceFirst("/(jdk.+)/", "/"+jdk+"/"); почему не проходит валидацию?
Vladimir S.I Service Engineer
4 ноября, 08:22
правильное решение тоже так себе.. Если появится подпапка jdk, всё рухнет
PERFORATTOR
Уровень 14, Russian Federation
31 октября, 14:08
Нашёл первый индекс сначала, потом второй индекс с конца. Вырезал текст до первого индекса и после второго индекса в два отдельных стринга. Склеил текст до первого индекса + новый жэдэка + текст после второго индекса. Не прокатило. Второй индекс нужно искать с начала, а не с конца, используя первый найденный индекс как точку отчёта.
Алексей Трашенков Консультант Share Point в Норникель - Общий це
27 октября, 12:53
Ругается на такой вариант решения - return path.replace("jdk1.8", jdk); Хотя результат тот что нужен по условию.
Matthew
Уровень 19, Russian Federation
29 октября, 08:55
По условию, версия jdk может отличаться от заданной в main() версии jdk1.8. Соответственно, если мы напрямую передаём в метод replace() строку "jdk1.8", то решение будет верным только для единственного сценария, где версия равна jdk1.8.
Алексей Трашенков Консультант Share Point в Норникель - Общий це
около 1 часа назад
Я об этом изначально не подумал. Да, все верно.
Matthew
Уровень 19, Russian Federation
25 октября, 01:41
Если "правильному решению" от авторов курса скормить путь
String path = "/usr/java/jdk/jdk1.8/bin";
то в результате получится
/usr/java/jdk-13/jdk-131.8/bin
Моё решение, принятое валидатором, выводит примерно такую же ерунду. Интересно, какие строки валидатор для проверки использует.
hamster🐹
Уровень 26, Москва, Russian Federation
4 октября, 10:26
Берем вариант из примера и с первого раза задача проходит)
Сергей
Уровень 40, Кандалакша, Россия
23 сентября, 13:39
Уже не могу проверить, пропустит ли валидатор:
return path.replaceAll("jdk.*/", jdk + "/");
Masha Frolova учу java
24 сентября, 14:50
не, ругается, я тоже так сначала решила.
Александр
Уровень 11, Пермь, Россия
29 сентября, 10:24
jdk.*?/ нужно добавить ленивый оператор, иначе будет заменено все до последнего / а не ближайшего, вдруг в пути еще слеши будут. или можно jdk.+?(?=/) чтоб сам слеш в замену не включало
Иван
Уровень 18, Кубань, Russian Federation
8 сентября, 12:10
lastIndexOf
- поиск с конца символа "/" - не прокатит у валидатора.
String replaceFirst
- тоже не прокатит если сразу "текст" указать, сначала найдите эту строку. Ищите через поиск indexOf , сначала "jdk", потом пропустив слово "jdk" символ "/". И нужно это в условии указывать а не вставить 1 слово - ДЕЛАЙ КАК В УСЛОВИИ. Согласно условию задача решается многими способами, НО условия не прописаны до конца.
Nikolay Myasnikov Учусь в Учусь
11 октября, 02:27
Решил задачу 4мя разными способами, но валидатор пропустил только на 4ый раз, когда наконец-то были соблюдены условия задачи)