我想从网页上获取一些网址。像这样获取URL:
http:\/\/xiaoshuo.360.cn\/novel.html
然后我想连接这些网址。由于没有有效的网址,因此会显示例外情况。
我的问题是:如何将http:\/\/xiaoshuo.360.cn\/novel.html
转换为http://xiaoshuo.360.cn/novel.html
我尝试使用s.replace("\\", "");
和replaceAll("\\", "");
它不起作用。
添加源代码:
public class GetUrls {
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<String>();
String Url = "http://hao.360.cn/";
list = getUrls(list, Url);
if (list.size() < 6000) {
for (int i = 0; i < list.size(); i++) {
getUrls(list, list.get(i));
}
}
}
public static List<String> getUrls(List<String> list, String Url)
throws Exception {
URL url = new URL(Url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String str;
while ((str = br.readLine()) != null) {
if (str.contains("http")) {
String[] strs = str.split("\"");
for (String s : strs) {
if (s.startsWith("http")
&& (s.endsWith("com") | s.endsWith("cn") | s
.endsWith("html"))) {
s.replaceAll("\\\\", "");
System.out.println(s);
list.add(s.toString());
if (list.size() >= 6000) {
break;
}
}
}
if (list.size() >= 6000) {
break;
}
}
}
return list;
}
}
答案 0 :(得分:2)
无需使用正则表达式。如果你想用斜杠替换反斜杠的所有序列后跟斜杠,你可以使用它:
str = str.replace("\\/", "/");
replace
方法将所有出现的一个字符串替换为另一个字符串。因为字符串在Java中是不可变的,所以该方法不会更改字符串,而是返回一个带有替换字符串的新字符串。
(感谢jhkuperus指出,所有反斜杠的炫目剥离可能会删除所需的反斜杠。)