Java:从包含文件的URI获取参数

时间:2011-06-22 11:39:45

标签: java string

我们说我的文件位于:

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 个答案:

答案 0 :(得分:2)

首先,看一下这篇文章,它使用URL类来更轻松地处理URL字符串的不同部分。

Could you share a link to an URL parsing implementation?

其次,您需要获取URL的Query部分和URL的Path部分,并对返回的值进行子字符串以获取所需的信息。它应该非常直接。

答案 1 :(得分:2)

使用URI的API!这就是它的用途。忘记所有这些子串/正则表达式/吐出的东西。

答案 2 :(得分:1)

你需要在字符串上使用split方法。例如,在你的fileName字符串

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

然后mystrings [0]是你的文件名,mystrings [1]是你的参数

答案 3 :(得分:1)

一种简单的方法是:只需重复子串:

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

等解析参数。

如果您正在编写servlet,请尝试:

String fileName = request.getServletPath(); 

和参数类似

String id = request.getParameter("id");

答案 4 :(得分:0)

试试这个正则表达式

    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;