当前位置: 代码迷 >> J2SE >> 婚配新浪微博中的@
  详细解决方案

婚配新浪微博中的@

热度:210   发布时间:2016-04-24 18:07:27.0
匹配新浪微博中的@
有没有什么好的方法将用户输入的一个字符串中以@开始的找出来,加上链接,但如果@以email的形式出现的就忽略,保留原来的形式。
第一个要求用正则表达式就可以实现但第二个好像有点困难啊....
Java code
public static void main(String[] args) {          String reg="@.*?(?=[.,:;!?\\s#@。,:;!?])";          Pattern pattern=Pattern.compile(reg);          System.out.println(pattern.toString());          Matcher matcher=pattern.matcher("fsafaf加大@梵净山,金佛山@就佛网 杰弗里斯abc@sina.com fsla");          StringBuffer sb=new StringBuffer();          while(matcher.find()){              System.out.println(matcher.group());              matcher.appendReplacement(sb, "<a href='abc'>"+matcher.group()+"</a>");          }          matcher.appendTail(sb);          System.out.println(sb);      }


------解决方案--------------------
那你考虑过有用户叫类似sina.com的没 如果是这种情况那@前面只要有字符那你就得认定是邮件而不是@名字
------解决方案--------------------
代码只是思想的体现,你自己要先弄清楚根据什么来区分哪个是带@的字符串,哪个是邮箱地址。
------解决方案--------------------
随便找个替换就行。呵呵。主要自己知道
------解决方案--------------------
改造了一下,看符不符合。。。哈哈。。。。
Java code
public static void main(String[] args) {        String reg = "([a-zA-Z0-9-.]*)@(.*?)([,:;!?\\s#@。,:;!?]|$|\\.(?:com|org|net))";        Pattern pattern = Pattern.compile(reg);        System.out.println(pattern.toString());        Matcher matcher = pattern                .matcher("fsafaf加大@梵净山,金佛山@就佛网 杰弗里斯abc@sina.com fsla;@sina.com;ssd@sina");        StringBuffer sb = new StringBuffer();        while (matcher.find()) {            String begin = matcher.group(1);            String middle = matcher.group(2);            String end = matcher.group(3);            // 判断email            if (!begin.equals("")) {                boolean isEmail = middle.length() != 0;                for (int i = 0; i < middle.length(); i++) {                    if (!Character.isLetterOrDigit(middle.charAt(i))) {                        isEmail = false;                        break;                    }                }                if (isEmail) {                    if (end.length() > 1) {                        //确认是email                        continue;                    }                }            }            matcher.appendReplacement(sb, begin + "<a href='abc'>" + "@"                    + middle + "</a>" + end);        }        matcher.appendTail(sb);        System.out.println(sb);    }
  相关解决方案