2015-03-01 2 views
0
public static ArrayList<String> cleanUpUrls(ArrayList<String> oldList,String url) { 
    ArrayList<String> cleanedList = new ArrayList<String>(); 
    for (int i =0; i <oldList.size(); i++) { 
     boolean isAnchorLink = false; 
     String link = oldList.get(i); 
     link = link.toLowerCase(); 

     //clean href="" part 
     link = link.substring(link.indexOf("\"") + 1); 
     link = link.substring(0, link.indexOf("\"")); 

     //check if anchor link 
     if (link.charAt(0) == '#') { 
      isAnchorLink = true; 
     } 

     //relative to absolute 
     if (link.charAt(0) == '/') { 
      link = url.concat(link); 
     } 

     //if no http or https then add 
     if (link.indexOf("http") == -1 && link.indexOf("https") == -1) { 
      String http = "http://"; 
      link = http.concat(link); 
     } 

     //remove query strings 
     if (link.indexOf("?") != -1) { 
      link = link.substring(0,link.indexOf("?")); 
     } 


     if (!isAnchorLink){ 

      cleanedList.add(link); 
    } 

}  System.out.println("xxxx"); 
     return cleanedList; 
} 

Вот функция cleanUpUrls который принимает ArrayList строк в качестве параметра и удаляет все ссылки привязки, т.е. HREF = «» части и преобразует их в абсолютные ссылки , если они относительны.Функция хорошо выполняется без ошибок, но не возвращает ожидаемый ответ

Проблема в том, что когда я его вызываю, она выполняется без ошибки времени компиляции/времени выполнения, но не возвращает ожидаемого ответа. Фактически, если я печатаю что-либо после вызова функции. Он ничего не печатает, даже println («xxx»); не отображается. Я не получаю ошибок компиляции/времени выполнения.

+0

Вы пытаетесь отлаживать код? – Maroun

+0

Вставьте свой основной метод. – SMA

+0

Iv попытался точно определить ошибку, напечатав вещи. Я не использую IDE, поэтому не имею доступа к отладчику. –

ответ

2

Вы, наверное, исключение здесь:

link = link.substring(0, link.indexOf("\"")); 

, так как в вашем примере "x" не содержит '\' второй ARG будет -1 и заставит substring бросить и исключение (IndexOutOfBoundsException).

Поскольку вы поймать исключение, но печать ничего это будет выглядеть как работает без ошибок так поставить код печати для отображения исключения:

catch (Exception e) { 
    System.out.println("Exception caught: " + e); 
}