-1

Html ファイルを表す文字列で、すべての相対リンクを絶対リンクに置き換えたいと考えています。次のメソッドを書きますが、うまくいきません。リンクの後にhttp://www.google.dehttp://www.google.de/resourceのような重複した baseurl が続きますか?

    public static String replacePattern(URL targetUrl,String urlAsString,String patternString) throws IOException{
    System.out.println(targetUrl.toString());
    Pattern pattern = Pattern.compile(patternString);
    Matcher matcher = pattern.matcher(urlAsString);

    Set<String> replacedStrings = new TreeSet<String>();


    //return matcher.replaceAll(targetUrl.toString()+"$0");

    while (matcher.find()) {
        String relativeLink = matcher.group(1);
        //System.out.println("Find Link " + relativeLink);
        if(!replacedStrings.contains(relativeLink)){
            //System.out.println("Relative Link " + relativeLink);
            String newLink = targetUrl.toString() + relativeLink;
            //System.out.println("New Link " + newLink);
            urlAsString = urlAsString.replace(relativeLink,newLink);
            replacedStrings.add(relativeLink);

        }

    }

    return urlAsString;

}

UrlAsString は、コンテンツ全体を文字列として含む文字列です。私のパターンは

href=['\"](/[^'\"]+)['\"]

src=['\"](/[^'\"]+)['\"]
4

1 に答える 1

0

クラス URLを使用:

URL baseUrl = new URL("http://www.domain.com/folder/");
URL url = new URL(baseURL , "url.html");
于 2012-11-06T15:12:34.553 に答える