1

私は小さなJavaツールを作成し、最初にURLを解析する必要があります。私の解決策についてあなたが何を考えているのか、そしてもっと良い方法があるかどうか知りたいのですが。ここではいくつかの例を示します。

aaa:// username:password @ server:port / dir /

aaa:// server:port / dir /

aaa:// server:port

ユーザーが注意しなければ、あらゆる種類の文字列が可能です。したがって、私の関数がそのような文字列を取得する可能性があります

aaa:// username:pass

それも。しかし、文字列は常にwitch aaa://で始まります。

これが私のコードです:

url = url.replaceFirst( "aaa://"、 "");

String params[] = url.split("@");
if(params[0].compareTo("") != 0) {
    String paramsfst[] = params[0].split(":");
    if(params.length == 1) {
        if(paramsfst.length >= 1) {
            this.server = parsePort(paramsfst[0]);
            if(paramsfst.length == 2) {
                this.port = parsePort(paramsfst[1]);
            }
        }               
    } else {
        String paramssec[] = params[1].split(":");
        if(paramssec.length >= 1) {
            this.server = parsePort(paramssec[0]);
            if(paramssec.length == 2) {
                this.port = parsePort(paramssec[1]);
            }
        }
        if(paramsfst.length == 2) {
            this.username = paramsfst[0];
            this.password = paramsfst[1];   
        }
    }
    if(url.contains("/")) {
        this.path = url.substring(url.indexOf("/"), url.length() -1);   
    }

private String parsePort(String port) {
    int i = port.indexOf("/");
    if(i == -1) {
        return port;
    }
    return port.substring(0, i);
}

どう思いますか?

4

3 に答える 3

6

URL クラスを見ましたか?

については、こちらを参照してください。

于 2012-11-24T23:15:01.103 に答える
0

個人的には、それは私の好みのコードのように見えます。regexを使用して、パターンを定義し、それをさまざまなキャプチャ グループにすべて 1 行で切り刻む方法を使用して、よりコンパクトに釘付けにできると思います。その後、後でグループの値を vars に読み込んで取引を完了します。今すぐ実行しなければなりません。後でコードを思い付くことができるかもしれませんが、下を見てjava regexください。オラクルによるかなりまともなチュートリアルがあります。

于 2012-11-24T23:16:10.770 に答える