当前位置:首页 > 开发 > 互联网 > 正文

判断链接是否为网址

发表于: 2012-06-06   作者:g21121   来源:转载   浏览:
摘要: 正则表达式可以判断链接是否为网址,这里我就不说了,我们这里要做的是把一个长链接分析出他的网站域名是什么,例如:http://www.51dota.cn/forum.php/ 我们应该获取的域名是:www.51dota.cn 下面就开始写程序吧: 首先我们写一个去除前后缀如:“http://”和“/”的方法:   /** * * 方法描述:去除前后缀 *

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

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
判断是否为空常用如下方法 判断指定对象是否为空值, 包含大部分情况, 譬如空数组,空字符串,Empty和Nu
AJAX异步方式请求比同步方式请求HTTP头部多一个 X-Requested-With 因此,在java代码中可以这样判断
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:王颖 * 完成日期:
来源:http://mcdelfino.blog.51cto.com/2058744/661301 int.TtyParse(string s, out int i) 用来判
select count(people) c from people where people='乐乐' 上面这条sql就是原理 php利用代码 <?p
示例: 空值判断方法: $csv[1].b -eq "" #返回true [string]::isnullorempty($csv[1].b) #返回true
ASP.NET MVC应用程序的UploadFiles目录,是存放用户上传的文件,当然包括图片。现在开发的要求是,
早上Insus.NET写了一篇博文《判断目录下的文件是否为图片》http://www.cnblogs.com/insus/p/3637624
问题描述:构造二叉排序树,替换一个元素后判断是否为二叉排序树。 程序输出:判断是否为二叉排序树
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号