gpt4 book ai didi

java - 在我的地址前添加 "Http://"

转载 作者:搜寻专家 更新时间:2023-11-01 03:57:41 26 4
gpt4 key购买 nike

我正在从源中提取地址,但有些提取物在地址前面没有 http://,我如何检查地址是否有 http://,如果没有,我该如何添加 http://在前? :O

出现这个错误,我猜是因为“缺少”http://infront

java.net.MalformedURLException: no protocol: www.speedtest.net
at java.net.URL.<init>(URL.java:583)
at java.net.URL.<init>(URL.java:480)
at java.net.URL.<init>(URL.java:429)
at a.PageRead.r(PageRead.java:29)
at a.ThreadDownloaderWriter.run(ThreadDownloaderWriter.java:35)
at java.lang.Thread.run(Thread.java:722)






public StringBuilder readPage() {
try {

URL url = new URL(this.strURL);
System.out.println(this.strURL);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
reader.close();

return sb;
} catch (MalformedURLException e) {
e.printStackTrace();
return new StringBuilder("");
} catch (IOException e) {
e.printStackTrace();
return new StringBuilder("");
}
}

最佳答案

您问题的字面答案看起来像这样:

String url = ... ; // Whatever
if (!url.startsWith("http://")) {
url = "http://" + url;
}

但这仍然不是一个很好的解决方案。例如,https URLS 怎么样? ftp 甚至文件系统 URL (file://) 怎么样?然后您可能需要考虑区分大小写 ("http://"!= "HTTP://"!= "HttP://”,尽管实际上它们都表示相同的意思,并且会被 Java 的 URL 类接受。

你可以试着更小心一点:

if (!url.toLowerCase().matches("^\\w+://.*")) {
url = "http://" + url;
}

这会将 URL 字符串的开头与后跟一个冒号 (:) 和两个斜杠 (//) 的任何“单词字符”相匹配,然后默认它如果 URL 的协议(protocol)部分丢失,则为 http://。这将涵盖比原始(文字)答案多得多的案例。

最终,如果有人给你一个没有协议(protocol)部分的 URL,它就是一个无效的 URL。

你应该考虑读一本关于 Java 编程的书,因为这些都是基本的逻辑/Java API 问题。

关于java - 在我的地址前添加 "Http://",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11725896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com