正则表达式可以判断链接是否为网址,这里我就不说了,我们这里要做的是把一个长链接分析出他的网站域名是什么,例如:http://www.51dota.cn/forum.php/
我们应该获取的域名是:www.51dota.cn
下面就开始写程序吧:
首先我们写一个去除前后缀如:“http://”和“/”的方法:
/**
*
* 方法描述:去除前后缀
*
* @author liming
* @time 2012-3-5 下午02:38:57
*
* @param url
* @return
*/
public static String trimHttpHead(String url) {
int i = url.indexOf("://");
int urlLen = url.length();
// 如果前缀是http://
if (i == 4) {
String httpStart = url.substring(0, 7);
if ("http://".equals(httpStart.toLowerCase())) {
url = url.substring(i + 3, urlLen);
urlLen = urlLen - 7;
}
}
// 如果前缀是https://
if (i == 5) {
String httpStart = url.substring(0, 8);
if ("https://".equals(httpStart.toLowerCase())) {
url = url.substring(i + 4, urlLen);
urlLen = urlLen - 8;
}
}
int j = url.lastIndexOf("/");
// 去掉末尾的"/"
if (j == urlLen - 1)
url = url.substring(0, urlLen - 1);
return url;
}
代码就是通过字符串的截取去掉现在不需要的前后缀,从而让所有网址统一起来好管理
前后缀去掉之后,我们来判断这个网址是否可以访问:
/**
*
* 方法描述:测试链接是否可以访问
*
* @author liming
* @time 2012-3-7 上午11:27:01
*
* @param url
* @return
*/
public static boolean isUrl(String url) {
URL urlTemp = null;
HttpURLConnection connt = null;
try {
urlTemp = new URL(Constants.HTTP + trimHttpHead(url));
connt = (HttpURLConnection) urlTemp.openConnection();
connt.setRequestMethod("HEAD");
int returnCode = connt.getResponseCode();
if (returnCode == HttpURLConnection.HTTP_OK) {
return true;
}
} catch (Exception e) {
return false;
} finally {
connt.disconnect();
}
return false;
}
这样就可以知道这个url是否为真实的网址,是否可以访问。
之后我们来做最后一步取出这个网址的网站域名地址:
/**
*
* 方法描述:获取网站地址
* @author liming
* @time 2012-6-6 下午02:22:33
*
* @param url
* @return
*/
public static String getWebSiteUrl(String url) {
if (isUrl(url)) {
String simpleUrl = trimHttpHead(url);
if (simpleUrl.indexOf(".com") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".com") + 4);
if (simpleUrl.indexOf(".net") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".net") + 4);
if (simpleUrl.indexOf(".org") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".org") + 4);
if (simpleUrl.indexOf(".mobi") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".mobi") + 5);
if (simpleUrl.indexOf(".info") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".info") + 5);
if (simpleUrl.indexOf(".biz") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".biz") + 4);
if (simpleUrl.indexOf(".cc") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".cc") + 4);
if (simpleUrl.indexOf(".tv") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".tv") + 4);
if (simpleUrl.indexOf(".asia") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".asia") + 5);
if (simpleUrl.indexOf(".me") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".me") + 4);
if (simpleUrl.indexOf(".travel") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".travel") + 7);
if (simpleUrl.indexOf(".tel") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".tel") + 4);
if (simpleUrl.indexOf(".name") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".name") + 5);
if (simpleUrl.indexOf(".co") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".co") + 3);
if (simpleUrl.indexOf(".so") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".so") + 3);
if (simpleUrl.indexOf(".cn") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".cn") + 3);
if (simpleUrl.indexOf(".com.cn") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".com.cn") + 7);
if (simpleUrl.indexOf(".net.cn") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".net.cn") + 7);
if (simpleUrl.indexOf(".org.cn") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".org.cn") + 7);
if (simpleUrl.indexOf(".gov.cn") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".gov.cn") + 7);
if (simpleUrl.indexOf(".hk") != -1)
return simpleUrl.substring(0, simpleUrl.indexOf(".hk") + 3);
}
return "";
}
其实这段代码没有任何复杂性,就是判断字符串是否含有域名的后缀,以上是所有通用域名,如果想添加其他域名,可以在后面继续判断。
当然你也可以用非常简单的方法:
new URL("http://www.yousaoqi.com/forum.php").getHost()
同样能取到网站域名,写上面这些东西主要是锻炼大家的思路,从而更好的学习和了解java。
分享到:
相关推荐
5. **判断链接是否有效**: ```java if (strMessage.compareTo("Not Found") == 0) { return false; } ``` 如果响应消息为“Not Found”,则说明链接无效,返回`false`;否则,认为链接有效。 6. **异常处理*...
设置请求方法为"HEAD",这是因为只需要头部信息来判断链接是否有效,而不需要下载整个页面内容,这样可以提高效率。接着,获取响应消息并检查是否等于"Not Found",如果是,则返回`false`,表示链接无效。 然而,...
判断网络是否链接源码
NULL 博文链接:https://onestopweb.iteye.com/blog/2405383
//判断是否是图片 function isImg(){ var f=$("#imgFile").val(); if(f==""){ alert("请上传图片");return false; }else { if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)) { alert("图片类型必须是.gif,...
在JavaScript中,判断一个文件是否为空是一个常见的需求,特别是在处理用户上传的文件或者与服务器进行文件交互时。本文将深入探讨如何使用JavaScript来检测文件是否为空,并提供相关的代码示例。 首先,我们要明白...
本文将深入探讨如何实现"Android APK下载文件的URL链接"以及如何判断网络状态。 首先,我们需要了解`Handler`机制。`Handler`在Android中用于线程间通信,它允许我们在主线程中更新UI。在下载APK的过程中,我们通常...
以下详细知识点涵盖了如何用JavaScript判断图片是否存在,以及实现这一功能的具体代码示例。 ### JavaScript检测图片是否存在 JavaScript提供了一种机制来处理图片加载失败的情况。当图片无法加载时,可以通过`...
原生js判断链接是否有效,可以解决跨域问题,但部分浏览器尚不兼容;你可以前往https://gitee.com/zhiqinzhe/zhiqinzheblog/tree/master/getUrlState免费下载
在C#编程中,判断网络是否连接以及获取连接类型是一项重要的任务,这通常涉及到网络编程和系统信息的获取。下面将详细介绍如何实现这个功能,并探讨相关的C#类库和技术。 首先,C#提供了System.Net.Network...
在软件开发过程中,经常会遇到需要判断一个字符串是否为有效网址的需求。本源码提供了一个简单实用的方法来实现这一功能。 #### 1.1 VBScript与正则表达式的结合 - **VBScript**:一种轻量级的脚本语言,通常用于...
在获取图片链接后,判断其有效性主要依赖于两个方面:一是图片链接本身是否有效(即能正常访问),二是确保图片格式正确且可被浏览器识别。这通常涉及到对图片链接进行HTTP请求,检查响应状态码以及响应头中的`...
在编程中,判断一个字符串是否为回文是一项常见的任务,对于学习基础算法和字符串处理非常有帮助。 在给定的"判断字符串是否回文"程序中,我们可以推测它实现了一个功能,即接收用户输入的字符串,然后检查这个字符...
在Android开发中,判断网络连接状态是至关重要的功能之一,特别是在设计依赖于互联网的应用时。本文将深入探讨如何在Android应用程序中实现网络连接状态的检测,包括但不限于WiFi、GSM和3G网络,并且会触及到更深...
首先,要判断一个文件是否存在,可以使用`System.IO.File`类的`Exists`方法。这个方法接收一个字符串参数,表示文件的完整路径,如果文件存在,它将返回`true`,否则返回`false`。例如: ```csharp string filePath...
例如,如果一个网站只是想验证图片链接是否有效,可能会简单地使用图片的`onerror`事件来判断;而如果需要在不同域名下频繁检测大量URL,那么可能需要考虑更高效的解决方案,比如HTTP服务端代理。 总而言之,文章...
74、原生JavaScript判断字符串是为网址不区分大小写">1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 11、原生JavaScript加入收藏夹 15...
搜索引擎对网站的信任度也是判断链接质量的标准之一。来自被搜索引擎信任的网站,如政府、教育、公益机构的链接,其价值通常高于商业网站。与此相反,与被惩罚的网站建立链接关系,可能会连带影响你的网站排名,因为...
引言 有一个通讯录系统, 同时部署在几台服务器上, 但是主页上有个通讯录的链接, 链接到这个系统. 问题是, 有时候链接指向的服务器出故障, 于是希望在这个服务器出故障(服务不可用)的情况下, 能指向其他服务器的链接....