Java 如何转换字符串";http:\/\/www.178.com“;至;http://www.178.com" 在爪哇
我想从网页上获取一些URL。用户获取的URL如下所示:Java 如何转换字符串";http:\/\/www.178.com“;至;http://www.178.com" 在爪哇,java,regex,Java,Regex,我想从网页上获取一些URL。用户获取的URL如下所示: http:\/\/xiaoshuo.360.cn\/novel.html 然后我想连接这些URL。将显示异常,因为没有有效的url 我的问题是:如何将http:\/\/xiaoshuo.360.cn\/novel.html转换为http://xiaoshuo.360.cn/novel.html 我尝试使用s.replace(“\\”,”)和replaceAll(“\\”,”)它不工作 添加源代码: public class GetUrls
http:\/\/xiaoshuo.360.cn\/novel.html
然后我想连接这些URL。将显示异常,因为没有有效的url
我的问题是:如何将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;
}
}
公共类getURL{
公共静态void main(字符串[]args)引发异常{
列表=新的ArrayList();
字符串Url=”http://hao.360.cn/";
列表=获取Url(列表,Url);
如果(list.size()<6000){
对于(int i=0;i=6000){
打破
}
}
}
如果(list.size()>=6000){
打破
}
}
}
退货清单;
}
}
无需使用正则表达式。如果您希望将反斜杠后跟斜杠的所有序列替换为斜杠,可以使用以下方法:
str=str.replace(“\\/”,“/”);
replace
方法用另一个字符串替换所有出现的字符串。因为字符串在Java中是不可变的,所以该方法不会更改字符串,而是返回一个新字符串,并进行替换
(感谢jhkuperus指出,盲法去除所有反斜杠可以去除需要的反斜杠。)String str=“http:\/\/www.178.com"; 你知道replaceAll的功能吗?我已经试过了。它不起作用。@t.J.Crowder,但我认为这是无效的。当我意识到问题的主体非常清楚地表明字符串应该像这样出现在源代码中时,它不能。蒂姆,你能澄清你的问题吗?也许可以使用str.replaceAll(“\\\\\\/”,“/”)代码>@T.J.从问题标题中,我了解到OP试图删除字符串中的反斜杠。正斜杠在OP的代码中,该代码试图删除正斜杠,但未能删除它们。@JHKUPURS否,如果字符串实际上包含反斜杠,后跟正斜杠,而OP只需要正斜杠,那么解决方案是将反斜杠替换为零,而不是将其替换为正斜杠。重读问题的标题。@DavidConrad好的,我想这取决于他的意图。这个问题本身在这方面是模棱两可的。输入和输出示例将允许这两种情况,要么删除所有反斜杠,要么只删除“转义”正斜杠。如果在同一个字符串中有一个\“
,它必须保留。但它不在给出的示例中,我同意。@jhkuperus仔细阅读这个问题后,我意识到它非常混乱和模糊。我正在考虑删除我的答案,直到OP澄清为止。