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 に答える