2012-11-06 99 views
-1

我想用一個表示Html文件的字符串替換所有相對鏈接和絕對鏈接。我寫了下面的方法,這不起作用。任何鏈接後都跟着一個像http://www.google.dehttp://www.google.de/resource這樣的重複基地址?Java。將相對鏈接替換爲絕對正則表達式

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是包含wholecontent String作爲String.My模式是

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

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

如果你能告訴我們具體*什麼*不起作用,我們可能會提供幫助。 –

+0

如果可以分享一些相對URL和預期的絕對URL,將會很有幫助。 –

+0

[使用XML解析器](http://stackoverflow.com/a/1732454/647772) – 2012-11-06 15:07:20

回答

0

使用Class URL

URL baseUrl = new URL("http://www.domain.com/folder/"); 
URL url = new URL(baseURL , "url.html"); 
+1

我不明白如何工作? –

+0

@AcdcRocknRoll - 您是否點擊了上面的鏈接「Class URL」? –

相關問題