В ссылке передается тип файла, который необходимо подставить к названию файла при загрузке. Он всегда идет после file%2c
, как его оптимально вытянуть? Может есть пример с помощью JSOUP?
https://site.com/download?resid=7257139334599!7571&authkey=!AKRZu44V2I1I&ithint=file%2cpdf
или
https://site.com/download?resid=76CC13Arr773BD!3049&ithint=file%2cdocx&app=Word&authkey=!AKrtQi2maRE
как по мне не очень удачный вариант:
private String getTypeFile(String typeFile) {
Pattern pt = Pattern.compile("(%2c)");
Matcher mt = pt.matcher(typeFile);
if (mt.find()) {
return typeFile.substring(mt.start() + 3, mt.start() + 6);
}
return null;
}
String str = "https://site.com/download?resid=7257139334599!7571&authkey=!AKRZu44V2I1I&ithint=file%2cpd42rerfds=13=32&?f";
Pattern pattern = Pattern.compile("file%2(.+)[a-z=?&.//_0-9]+");
Matcher matcher = pattern.matcher(str);
while (matcher.find())
{ System.out.print(str.substring(matcher.start()+6,matcher.end()) + " "); }
System.out.println();
ищутся совпадения "file%2" и после подставляешь символы какие должны выводиться.
Самое тривиальное решение:
private String getFileExtension(String link) {
int p1 = link.indexOf("file%2c");
if (p1 == -1) {
throw new IllegalArgumentException("Incorrect link!");
}
p1 += 7; // "file%2c".length() == 7
int p2 = link.indexOf("&", p1);
return p2 == -1 ? link.substring(p1) : link.substring(p1, p2);
}
Если разработка ведется с использование Android SDK, то можно воспользоваться методом getQueryParameter(...)
класса android.net.Uri
.
Если действительно file.
всегда присутствует:
String.split
typeFile.split("file%2c")[1].split("&")[0];
Иначе, можно добавить:
if (!typeFile.contains("file%2c")) return null;
Более правильным конечно будет парсить URI как URI.
Пример (опуская обработку ошибок):
MultiValueMap<String, String> parameters =
UriComponentsBuilder.fromUri(new URI(typeFile)).build().getQueryParams();
String fileName = parameters.get("ithint").get(0);
String ext = FilenameUtils.getExtension(fileName);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Создал кастомный DialogFragment с допметодами для быстрого построение диалога из активити
Необходимо сделать так, чтобы при попадании очередной даты на субботу, дата сдвинулась на пятницу и, соответственно, с воскресенья на понедельник
Ну я сразу скажу, что только начинаю изучать Spring, так что не судите очень строгоПоймал себя на том, что пишу в файле конфигурации одно и то же