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 ,它将字符串的数组列表作为参数并删除所有锚链接,即 href =&#34;&#34; 部分并转换它们绝对联系,如果他们是相对的。
问题在于,当我调用它时,它会在没有编译时/运行时错误的情况下执行,但不会返回预期的响应。事实上,如果我在函数调用之后打印任何内容它不会打印任何内容,即使 println(&#34; xxx&#34;); 也不会显示。我没有得到任何编译/运行时错误。
答案 0 :(得分:2)
你可能有一个例外:
link = link.substring(0, link.indexOf("\""));
因为在您的示例中"x"
不包含'\'
,所以第二个arg将为-1并且将导致substring
抛出异常(IndexOutOfBoundsException
)。
由于您捕获异常但没有打印任何内容,它看起来就像没有错误一样运行所以放置一个用于显示异常的打印代码:
catch (Exception e) {
System.out.println("Exception caught: " + e);
}