用Java解析URL

我正在寻找Java中的PHP的“parse_url”函数。 我没有在Tomcat中运行。 我有一个保存在数据库中的查询字符串,我试图将其拆分为单个参数。 我在Pentaho里面工作,所以我只能使用Java SE类。 我知道我可以写一个插件或其他东西,但如果我要做所有的事情,我只需用PHP编写脚本并完成它。

TLDR:寻找一个Java标准类/函数,它接受一个String并吐出一个参数数组。

谢谢,

罗杰

您可以使用java.net.URL完成此操作:

 URL url = new URL("http://hostname:port/path?arg=value#anchor"); String protocol = url.getProtocol(); // http String host = url.getHost(); // hostname String path = url.getPath(); // /path int port = url.getPort(); // port String query = url.getQuery(); // arg=value String ref = url.getRef(); // anchor 

这是快速和肮脏的东西(没有编译它,但你应该得到这个想法。

 URL url = new URL("http://..."); String query = url.getQuery(); String paramStrings[] = query.split("\\&"); HashMultiMap params = HashMultiMap.create(); // <== google guava class for (int i=0;iparamStrings.length;i++) { String parts[] = params[i].split("="); params.put(URLDecoder.decode(parts[0], "UTF-8"), URLDecoder.decode(parts[1], "UTF-8")); } Set paramVals = params.get("paramName"); 

如果你不想使用guava类,你可以使用一些额外的代码和HashMap>来完成同样的事情

在Java中没有这样的东西。 您需要手动解析字符串并创建自己的数组。 您可以使用StringTokenizer,String.split或Regular Expressions轻松创建自己的parse_url。

您还可以将数据库中的这些字符串转换回URL对象并以这种方式解析它们, 这里是文档 。

String有一个split函数,但是你需要编写自己的regex来确定如何拆分字符串。

请参阅: http : //docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)