Java: получение параметров из URI, который содержит файл - PullRequest
0 голосов
/ 22 июня 2011

скажем, у меня есть файл, расположенный в:

http://example.com/123.app

теперь я получаю имя файла, используя следующее (u - целая строка URL):

String fileName = u.substring( u.lastIndexOf('/')+1, u.length() );

но я хочу присвоить файлу то же имя и параметры, так что это будет выглядеть так:

http://example.com/123.app?id=87983

И я хочу иметь String fileName, который будет содержать «123.app», а также String id, который будет содержать «87983» и, возможно, больше параметров.

Как мне добиться этого?

Ответы [ 5 ]

2 голосов
/ 23 июня 2011

Используйте API URI! Вот для чего это. Забудьте все эти подстроки / регулярные выражения / косы.

2 голосов
/ 22 июня 2011

Во-первых, взгляните на этот пост, который использует класс URL, чтобы упростить работу с различными частями строки URL.

Не могли бы вы поделиться ссылкой на разбор URL?реализация?

Во-вторых, вам нужно будет взять часть URL-адреса в части запроса и часть URL-адреса в виде пути и подставить возвращаемые значения, чтобы получить необходимую информацию.Это должно быть довольно просто.

1 голос
/ 22 июня 2011

Простой способ: просто повторить подстроку:

int qidx = filename.indexOf("?");
String realFilename = filename.substring(0, qidx);
String parameters = filename.substring(qidx+1);

и т. Д. Для анализа параметров.

Если вы пишете сервлет, попробуйте:

String fileName = request.getServletPath(); 

и для параметров что-то вроде

String id = request.getParameter("id");
1 голос
/ 22 июня 2011

вам нужно использовать метод split для строки.Так, например, для вашей строки fileName

String[] mystrings = fileName.split("?");

тогда mystrings [0] - это ваше имя файла, а mystrings [1] - ваш параметр

0 голосов
/ 22 июня 2011

Попробуйте это регулярное выражение :

    String s = "http://example.com/123.app?id=87983";
    String[] split = s.split(".*/|\\?id=");
    String filename = split[1];
    String id = (split.length == 3) ? split[2] : null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...