0

私はJavaの初心者です。以下のテキストのすべてのURLを取得したいです

WEBSITE1 https://localhost:8080/admin/index.php?page=home
WEBSITE2 https://192.168.0.3:8084/index.php
WEBSITE3 https://192.168.0.5:9090/controller/index.php?page=home
WEBSITE4 https://192.168.0.1:8080/home/index.php?page=forum

私が望む結果は次のとおりです。

https://localhost:8080
https://192.168.0.3:8084
https://192.168.0.5
https://192.168.0.1:8080

リンクリストまたは配列にも保存したい。誰か教えてくれませんか?ありがとうございました

4

5 に答える 5

1

これがあなたがこれを行う方法です。私はあなたのために1つを行い、あなたは残りを行います:)

try {
            ArrayList<String> urls = new ArrayList<String>();
            URL aURL = new URL("https://localhost:8080/admin/index.php?page=home");
             System.out.println("protocol = " + aURL.getProtocol()+aURL.getHost()+aURL.getPort());
             urls.add(aURL.getProtocol()+aURL.getHost()+aURL.getPort());
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
于 2013-06-20T13:30:37.433 に答える
0

あなたはの助けを借りてそれを行うことができますURL class.

 public static void main(String[] args) throws MalformedURLException { 

        String string ="https://192.168.0.5:9090/controller/index.php?page=home";
        URL url= new URL(string);
        String result ="https://"+url.getHost()+":"+url.getPort();
        System.out.println(result);
    }

Output :https://192.168.0.5:9090
于 2013-06-20T13:30:05.503 に答える
0

文字列でプロトコル部分文字列 ("http[s]") のインデックスを検索するか、単純なPattern("website[0-9]" ヘッドに一致する場合のみ、URL には適用しない) を使用することができます。 .

を使った解決方法をご紹介しPatternます。

String webSite1 = "WEBSITE1 https://localhost:8080/admin/index.php?page=home";
String webSite2 = "WEBSITE2 https://192.168.0.3:8084/index.php";
String webSite3 = "WEBSITE3 https://192.168.0.5:9090/controller/index.php?page=home";
String webSite4 = "WEBSITE4 https://192.168.0.1:8080/home/index.php?page=forum";
ArrayList<URI> uris = new ArrayList<URI>();
Pattern pattern = Pattern.compile("^website\\d+\\s+?(.+)", Pattern.CASE_INSENSITIVE);
Matcher matcher;
matcher = pattern.matcher(webSite1);
if (matcher.find()) {
    try {
        uris.add(new URI(matcher.group(1)));
    }
    catch (URISyntaxException use) {
        use.printStackTrace();
    }
}
matcher = pattern.matcher(webSite2);
if (matcher.find()) {
    try {
        uris.add(new URI(matcher.group(1)));
    }
    catch (URISyntaxException use) {
        use.printStackTrace();
    }
}
matcher = pattern.matcher(webSite3);
if (matcher.find()) {
    try {
        uris.add(new URI(matcher.group(1)));
    }
    catch (URISyntaxException use) {
        use.printStackTrace();
    }
}
matcher = pattern.matcher(webSite4);
if (matcher.find()) {
    try {
        uris.add(new URI(matcher.group(1)));
    }
    catch (URISyntaxException use) {
        use.printStackTrace();
    }
}
System.out.println(uris);

出力:

[https://localhost:8080/admin/index.php?page=home, https://192.168.0.3:8084/index.php, https://192.168.0.5:9090/controller/index.php?page=home, https://192.168.0.1:8080/home/index.php?page=forum]
于 2013-06-20T13:30:59.317 に答える
0

単純な正規表現を使用して、最初の部分を特定しhttps?://、最初の部分までこれを抽出します。/

Matcher m = Pattern.compile("(https?://[^/]+)").matcher(//
        "WEBSITE1 https://localhost:8080/admin/index.php?page=home\r\n" + //
        "WEBSITE2 https://192.168.0.3:8084/index.php\r\n" + //
        "WEBSITE3 https://192.168.0.5:9090/controller/index.php?page=home\r\n" + //
        "WEBSITE4 https://192.168.0.1:8080/home/index.php?page=forum");
List<String> urls = new ArrayList<String>();
while (m.find()) {
    urls.add(m.group(1));
}
System.out.println(urls);

部分だけを取得したい場合はWEBSITE.、正規表現"(https?://[^/]+)"を次のように変更するだけです"(.*?)\\s+https?"。コードの残りの部分は変更されません。

于 2013-06-20T13:31:23.760 に答える
0

lineが単一の行を表しているとしましょう(おそらくループ内):

//get the index of "https" in the string
int indexOfHTTPS= line.indexOf("https://");
//get the index of the first "/" after the "https"
int indexOfFirstSlashAfterHTTPS= line.indexOf("/", indexOfHTTPS + "https://".length());

//take a string between "https" and the first "/"
String url = line.substring(indexOfHTTPS, indexOfFirstSlashAfterHTTPS);

後で、この URL を に追加しますArrayList<String>

ArrayList<String> urlList= new ArrayList<String>();
urlList.add(url);
于 2013-06-20T13:28:39.260 に答える