`
ts1993
  • 浏览: 13370 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

最近要写一个把用户输入的网址改为超链接的需求,最后用正则解决,匹配 可能的网址

阅读更多
果然还是要好好学学java的正则表达式,
本例子使用java se 1.4新增的正则表达式 匹配 循环找出用户输入的字符串中可是是网址的子字符串,并且替换为带 a 标签。

 private void getRealMsg(Stream ps){
                String urlreg = "((http|https)://){0,1}[\\w]+[\\.:][\\w.!@#$%^?=&\\-\\+:*\\d/]+"; 
		pattern = Pattern.compile(urlreg, Pattern.CASE_INSENSITIVE);
		String content = ps.getPushcontent();
		if(content.trim().length() < 4){
			return;
		}
		content = content.replaceAll("<script", "&lt;script");
		content = content.replaceAll("script>", "script&gt;");
		Matcher mac = pattern.matcher(content);
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<String> rlist = new ArrayList<String>();
		String src = null;
		try {
			while(mac.find()){
				src = mac.group();
				list.add(src);
			}
		} catch (Exception e) {
			Logs.getLog(StreamDao.class).error(e);
			return;
		}
		if(list.size() < 1){
			return;
		}
		for(String s : list){
			rlist.add(content.substring(0, content.indexOf(s) + s.length()));
			content = content.substring(content.indexOf(s) + s.length(), content.length());
		}
		int i = 0;
		for(String s : list){
			if(s.startsWith("http")){
				rlist.set(i, rlist.get(i).replace(s, "<a href=\"" + s + "\" target=\"_blank\">" + s + "</a>"));
			}else{
				rlist.set(i, rlist.get(i).replace(s, "<a href=\"http://" + s + "\" target=\"_blank\">" + s + "</a>"));
			}
			i++;
		}
		StringBuilder sb = new StringBuilder();
		for(String s : rlist){
			sb.append(s);
		}
		ps.setPushcontent(sb.toString());
	}


写正则的必备网址啊,可以在线编辑正则,Flash实现~~~

  http://gskinner.com/RegExr/
分享到:
评论

相关推荐

    asp.net乱码解决方法

     1、在web.config里配制,这个方法确实可行,但我想很多人不想用这种方法来解决,把整个项目的请求和回应都定为gb2312,我觉得不是一个好办法,有点本末倒置了,毕竟这会导致很多其它问题的出现。  2、把要包含...

    JavaScript笔记

    |--x.toString():用于把一个 Number 对象转换为一个字符串,并返回结果 19.正则表达式对象:(专门用于查找和验证) reg.test(‘要验证的完整字符串’)匹配返回true,否则返回false 强调:如果正则表达式使用了^和$...

    《javaScrip开发技术大全》源代码

    • sample29.htm 使用正则表达式匹配要替换的子字符串 • sample30.htm 更多的替换字符串 • sample31.htm 将字符串分割成数组 • sample32.htm 转换大小写 • sample33....

    PHP开发实战1200例源码

    实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 ...

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#...,每一个知识点都配有具体的示例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 ...

    PHP程序开发范例宝典III

    实例227 使用聚集函数First或Last求数据表中第一条或最后一条记录 352 8.10 多表查询 354 实例228 使用select语句进行多表查询 354 实例229 使用表的别名 355 实例230 合并多个结果集 356 8.11 嵌套查询...

Global site tag (gtag.js) - Google Analytics