`
g21121
  • 浏览: 695717 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

判断链接是否为网址

 
阅读更多

正则表达式可以判断链接是否为网址,这里我就不说了,我们这里要做的是把一个长链接分析出他的网站域名是什么,例如: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。

0
0
分享到:
评论
1 楼 flyingsir_zw 2014-11-13  
 /**
     * 提取主域名
     */
    public static String getTopUrl(String url){
        Pattern p = Pattern.compile("(?<=http://|\\.)[^.]*?\\.(com|cn|net|org|biz|info|cc|tv)",Pattern.CASE_INSENSITIVE);
        Matcher matcher = p.matcher(url);
        matcher.find();
        System.out.println(matcher.group());
        return matcher.group();
    }

相关推荐

    使用java快速判断网页链接是否有效

    5. **判断链接是否有效**: ```java if (strMessage.compareTo("Not Found") == 0) { return false; } ``` 如果响应消息为“Not Found”,则说明链接无效,返回`false`;否则,认为链接有效。 6. **异常处理*...

    判断url链接是否有效

    设置请求方法为"HEAD",这是因为只需要头部信息来判断链接是否有效,而不需要下载整个页面内容,这样可以提高效率。接着,获取响应消息并检查是否等于"Not Found",如果是,则返回`false`,表示链接无效。 然而,...

    判断网络是否链接源码

    判断网络是否链接源码

    JQ 判断链接的内容

    NULL 博文链接:https://onestopweb.iteye.com/blog/2405383

    js 判断文件时候为空

    在JavaScript中,判断一个文件是否为空是一个常见的需求,特别是在处理用户上传的文件或者与服务器进行文件交互时。本文将深入探讨如何使用JavaScript来检测文件是否为空,并提供相关的代码示例。 首先,我们要明白...

    JS判断是否是图片类型

    //判断是否是图片 function isImg(){ var f=$("#imgFile").val(); if(f==""){ alert("请上传图片");return false; }else { if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)) { alert("图片类型必须是.gif,...

    Android apk下载文件的url链接,并且可以判断网络是否连接

    本文将深入探讨如何实现"Android APK下载文件的URL链接"以及如何判断网络状态。 首先,我们需要了解`Handler`机制。`Handler`在Android中用于线程间通信,它允许我们在主线程中更新UI。在下载APK的过程中,我们通常...

    Android判断一个文件是否为MP4文件

    用户更改后缀名后在用扩展名判断文件类型,是不准确的。所以改为用读取文件二进制方式,读取文件头来跟MP4信息头对比判断。

    用Javascript判断图片是否存在,不存在则显示默认图片的代码

    以下详细知识点涵盖了如何用JavaScript判断图片是否存在,以及实现这一功能的具体代码示例。 ### JavaScript检测图片是否存在 JavaScript提供了一种机制来处理图片加载失败的情况。当图片无法加载时,可以通过`...

    原生js判断链接是否有效

    原生js判断链接是否有效,可以解决跨域问题,但部分浏览器尚不兼容;你可以前往https://gitee.com/zhiqinzhe/zhiqinzheblog/tree/master/getUrlState免费下载

    C#判断网络是否连接

    在C#编程中,判断网络是否连接以及获取连接类型是一项重要的任务,这通常涉及到网络编程和系统信息的获取。下面将详细介绍如何实现这个功能,并探讨相关的C#类库和技术。 首先,C#提供了System.Net.Network...

    判断是否为网址的软件源码

    在软件开发过程中,经常会遇到需要判断一个字符串是否为有效网址的需求。本源码提供了一个简单实用的方法来实现这一功能。 #### 1.1 VBScript与正则表达式的结合 - **VBScript**:一种轻量级的脚本语言,通常用于...

    java获取网网页中出现的图片及判断网页代码中是否包含有效图片

    在获取图片链接后,判断其有效性主要依赖于两个方面:一是图片链接本身是否有效(即能正常访问),二是确保图片格式正确且可被浏览器识别。这通常涉及到对图片链接进行HTTP请求,检查响应状态码以及响应头中的`...

    判断字符串是否回文 程序

    在编程中,判断一个字符串是否为回文是一项常见的任务,对于学习基础算法和字符串处理非常有帮助。 在给定的"判断字符串是否回文"程序中,我们可以推测它实现了一个功能,即接收用户输入的字符串,然后检查这个字符...

    Android系列之如何判断网络链接状态

    在Android开发中,判断网络连接状态是至关重要的功能之一,特别是在设计依赖于互联网的应用时。本文将深入探讨如何在Android应用程序中实现网络连接状态的检测,包括但不限于WiFi、GSM和3G网络,并且会触及到更深...

    C#判断文件是否存在并创建和删除文件夹

    首先,要判断一个文件是否存在,可以使用`System.IO.File`类的`Exists`方法。这个方法接收一个字符串参数,表示文件的完整路径,如果文件存在,它将返回`true`,否则返回`false`。例如: ```csharp string filePath...

    js判断url是否有效的两种方法

    例如,如果一个网站只是想验证图片链接是否有效,可能会简单地使用图片的`onerror`事件来判断;而如果需要在不同域名下频繁检测大量URL,那么可能需要考虑更高效的解决方案,比如HTTP服务端代理。 总而言之,文章...

    js常用100例方法 正则 移动设备判断 金额转换等 页面resize 超实用

    74、原生JavaScript判断字符串是为网址不区分大小写"&gt;1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 11、原生JavaScript加入收藏夹 15...

    swift-iOS判断本机是否安装某些app

    在实际开发中,你可能需要检查多个应用的安装情况,可以将上述代码封装为一个函数,传入不同的URL Scheme进行判断。此外,也可以考虑使用第三方库如`WZXApps`(根据压缩包的文件名猜测),它可能提供了更便捷的方式...

    高质量的链接质量判断标准

    搜索引擎对网站的信任度也是判断链接质量的标准之一。来自被搜索引擎信任的网站,如政府、教育、公益机构的链接,其价值通常高于商业网站。与此相反,与被惩罚的网站建立链接关系,可能会连带影响你的网站排名,因为...

Global site tag (gtag.js) - Google Analytics