Возникла проблема переделать FTP-ссылки к файлу на более "юзер-френдли" вид.
Сейчас ссылки имеют вид:
ftp://ftp.domain.com:22/path/to/the/file
Хочется конвертировать их под данный вид:
\\ftp\ftp\path\to\the\file
Делается это для того, чтобы пользователь мог, скопировав данную ссылку, перейти через Проводник к данному файлу и скачать/открыть его. Данный метод по изменению пишу на Java, решил с помощью регулярных выражений находить и изменять значения, но некоторые тест-кейсы не покрываются.
Сам метод:
public String reformatLink(String filePath) {
return filePath
.replaceAll("ftp://", "//")
.replaceAll("((.domain.com(:[\\w]+)*)|(:[\\w]+))", "/ftp")
.replaceAll("/", "\\\\");
}
JUnit тест:
@Parameterized.Parameters
public static Collection<Object[]> sources() {
return Arrays.asList(new Object[][]{
{"ftp://ftp.domain.com:22/Temp_Users_Data/test/test.zip"},
{"ftp://ftp:22/Temp_Users_Data/test/test.zip"},
{"ftp://ftp/Temp_Users_Data/test/test.zip"},
{"ftp://ftp.domain.com/Temp_Users_Data/test/test.zip"}});
}
@org.junit.Test
public void test() {
String result = source
.replaceAll("ftp://", "//")
.replaceAll("((.domain.com(:[\\w]+)*)|(:[\\w]+))", "/ftp")
.replaceAll("/", "\\\\");
assertEquals("\\\\ftp\\ftp\\Temp_Users_Data\\test\\test.zip", result);
}
Значение ftp://ftp/Temp_Users_Data/test/test.zip
не подходит под данное условие. Может стоит как-то переделать регулярку? Кто сталкивался с похожей проблемой, подскажите, пожалуйста.
String[] links = {"ftp://ftp.domain.com:22/Temp_Users_Data/test/test.zip",
"ftp://ftp:22/Temp_Users_Data/test/test.zip",
"ftp://ftp/Temp_Users_Data/test/test.zip",
"ftp://ftp.domain.com/Temp_Users_Data/test/test.zip"};
for (String s : links) {
s = "\\\\" + s.replaceFirst("ftp://", "").replaceFirst("([.:][^/]+)?/", "/ftp/").replace('/', '\\');
System.out.println(s);
}
Напечатает:
\\ftp\ftp\Temp_Users_Data\test\test.zip
\\ftp\ftp\Temp_Users_Data\test\test.zip
\\ftp\ftp\Temp_Users_Data\test\test.zip
\\ftp\ftp\Temp_Users_Data\test\test.zip
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
В общем я выучил Python, в нем можно просто написать
Читал какие-то английские статьи про обновление java 11, поддержку старых версий и тд
Есть таблица с primary key idЗапрос изменяет значение поля age для юзера с заданным id