如何转换String" http:\ / \ / www.178.com"到" http://www.178.com"在Java中

时间:2014-11-07 08:21:16

标签: java regex

我想从网页上获取一些网址。像这样获取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;
}
}

1 个答案:

答案 0 :(得分:2)

无需使用正则表达式。如果你想用斜杠替换反斜杠的所有序列后跟斜杠,你可以使用它:

str = str.replace("\\/", "/");

replace方法将所有出现的一个字符串替换为另一个字符串。因为字符串在Java中是不可变的,所以该方法不会更改字符串,而是返回一个带有替换字符串的新字符串。

(感谢jhkuperus指出,所有反斜杠的炫目剥离可能会删除所需的反斜杠。)