В задаче необходимо сравнить два пути и вывести в консоль относительный путь между введенными путями, если он существует. Правильное решение к данной задаче включает в себя обработку ошибки, которая возникает в случае, если относительного пути не существует (разные диска указаны, или относительные пути не имеют ни одной общей директории и тп.). Вроде как проверка на существование относительного пути выполнена.
А в случае если:
В консоль выдается "..". Или пустую строку, если пути одинаковы. И по факту выполнения условия нет.
Поделитесь соображениями, пожалуйста, как проверить существует ли относительный путь в случае как указано на рисунке?
EkaterinaLvova
19 уровень
Правильное решение ведь не работает
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел Безумный учёный Expert
22 февраля 2021, 16:32
При вычислении относительного пути при помощи метода relativize() имеет значение порядок использования объектов исходных путей: на каком объекте вызывается метод, и какой объект передаётся в качестве аргумента метода. Приведенный Вами пример можно читать так: "Чтобы получить путь C:\windows из пути C:\windows\projects\note.txt необходимо подняться на 1 уровень вверх". Вывод в консоль двух точек означает "выйти из текущего каталога в родительский". При этом другими двумя точками обозначается сам файл:
Если изменить третью строку следующим образом
то вывод в консоль будет таким:
То есть получаем относительный путь, по которому нужно проследовать из текущего места path2 до файла, находящегося по пути path1.
+1
EkaterinaLvova
23 февраля 2021, 09:55
Не совсем корректно, видимо, вопрос задала. Как бы сделать проверку в том случае, если выдается вариант "..\..", чтобы запустить поиск относительного пути, сменив местами объекты с и наоборот
при необходимости.
Вручную то понятное дело :)
0
Павел Безумный учёный Expert
23 февраля 2021, 10:29решение
Автоматизировать выбор относительного пути можно при помощи регулярного выражения:
Сначала вычисляются оба варианта относительного пути и сохраняются в переменные path3 и path4. Затем один из этих путей проверяется на соответствие регулярному выражению: он должен начинаться с .. и содержать в себе 0 или более групп \.. . В результате проверки один из путей отсеивается, а другой выводится в консоль.
+4
EkaterinaLvova
24 февраля 2021, 13:45
Спасибо огромное!!!
П.С. выражение можно укоротить
Работает и в таком виде.
+1
Павел Безумный учёный Expert
24 февраля 2021, 13:53
На здоровье )
0