我们说我的文件位于:
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'可能还有更多的参数。
我将如何实现这一目标?
答案 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;