1

以下のような文字列にURLがあります

http://www.example.com/abc?page=6
http://www.example.com/abc?page=66
http://www.example.com/abc?page=666

Javaで文字列関数を使用してページ番号のみ、つまり「=」の後の文字のみを抽出したいのですが、これを行う方法がわかりません。助けてください

ありがとうございました

4

4 に答える 4

17

特定の文字の後に何かを取得するだけの単純なケースの場合、正規表現は実際には必要ありません。

String test = "http://www.example.com/abc?page=6";
String number = test.substring(test.lastIndexOf("=") + 1);
System.out.println(number);

出力

6

ノート

yourに文字Stringが含まれていない場合=、結果は全体になりStringます。

これは、メソッドlastIndexOfが を返すために発生します。この例で- 1は、これが合計されているため、 が返されます。+10

要するに、元の の全長でString始まり、全長に及ぶ部分文字列を返します。0String

于 2013-05-24T18:21:00.053 に答える
3

あなたが使用することができますString.substring method

   String result = input.substring(input.indexOf("=")+1);

追加情報

ここのJavaドキュメントに従って

public String substring(int beginIndex)

この文字列の部分文字列である新しい文字列を返します。部分文字列は、指定されたインデックスの文字で始まり、この文字列の末尾まで拡張されます。

于 2013-05-24T18:21:07.150 に答える
2

URL(「ページ」だけでなく)内の特定のパラメーターの整数値を抽出するために使用できるソリューションは次のとおりです。

public static int extractIntFromURL(String url,String par) throws ParameterNotFoundInURLException{
    int number=0;
    Pattern p = Pattern.compile("[?&]"+par+"=([0-9]+)");
    Matcher m = p.matcher(url);
    m.find();
    try {
        number = Integer.parseInt(m.group(1));
    } catch (java.lang.IllegalStateException e){
        throw new ParameterNotFoundInURLException(url);
    }

    return number;
}

URL に "page=" が含まれていない場合、例外がスローされます。ゼロが有効なページ番号である可能性があるため、ゼロを返すのは正しくありません。

次のように使用できます。

public static void main(String[] args) throws ParameterNotFoundInURLException {
    String url="http://www.example.com/abc?page=66&other=yes&filter=none";
    int pageNum = TheClass.extractIntFromURL(url,"page");
}
于 2013-05-24T18:47:10.157 に答える
1

URL の形式が固定されている場合

String url = "http://www.example.com/abc?page=666";
String page = url.substring(url.lastIndexOf('=')+1);
System.out.println(page); // prints 666

後で他のリクエストパラメータが存在する可能性がある場合

String url = "http://www.example.com/book?id=101&page=60&bookmarks=on";
String page = url.split("\\?")[1].replaceAll(".*page=([^&]+).*", "$1");
System.out.println(page); // prints 60
于 2013-05-24T18:47:05.440 に答える