3

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

TLDR:寻找一个 Java 标准类/函数,它接受一个字符串并输出一组参数。

谢谢,

罗杰

4

4 回答 4

10

您可以使用以下方法完成此操作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
于 2012-11-16T00:22:09.050 回答
-1

这是一些又快又脏的东西(还没有编译过,但你应该明白了。

URL url = new URL("http://...");
String query = url.getQuery();
String paramStrings[] = query.split("\\&");
HashMultiMap<String, String> 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<String> paramVals = params.get("paramName");

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

于 2012-11-16T02:33:36.210 回答
-2

Java中没有这样的东西。您将需要手动解析字符串并创建自己的数组。您可以使用 StringTokenizer、String.split 或正则表达式轻松创建自己的 parse_url。

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

于 2012-11-16T00:21:07.947 回答
-4

字符串具有拆分功能,但您需要编写自己的正则表达式来确定如何拆分字符串。

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

于 2012-11-16T00:17:01.340 回答