我正在寻找与 Java 中 PHP 的“parse_url”函数等效的函数。我没有在 Tomcat 中运行。我将查询字符串保存在数据库中,我试图将其分解为单个参数。我在 Pentaho 内部工作,所以我只有 Java SE 类可以使用。我知道我可以编写一个插件或其他东西,但如果我要做所有这些,我将只用 PHP 编写脚本并完成它。
TLDR:寻找一个 Java 标准类/函数,它接受一个字符串并输出一组参数。
谢谢,
罗杰
您可以使用以下方法完成此操作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<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> 来完成同样的事情
Java中没有这样的东西。您将需要手动解析字符串并创建自己的数组。您可以使用 StringTokenizer、String.split 或正则表达式轻松创建自己的 parse_url。
您还可以将这些字符串从数据库转换回 URL 对象并以这种方式解析它们,这里是 docs。
字符串具有拆分功能,但您需要编写自己的正则表达式来确定如何拆分字符串。
请参阅:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)