我想在网页内容里判断一段文字是否是一个超链接,比如我现在想判断文字bc是否是超链接,网页内容是:abcde,怎么判断呢?想用C#或javascript,但目前还想不出好的和效率高的办法,请高手指点一二,最好有个DEMO代码,在线等

解决方案 »

  1.   

    用正则吧!http://blog.csdn.net/precipitant/archive/2004/10/19/142579.aspx
      

  2.   

    估计只能依据类似<a>这种标志去找!
      

  3.   

      If System.Text.RegularExpressions.Regex.IsMatch("http://blog.csdn.net/precipitant", "http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.Singleline) Then
                MsgBox("true")
            Else
                MsgBox("flase")
            End If        If System.Text.RegularExpressions.Regex.IsMatch("我是塞北的雪", "http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.Singleline) Then
                MsgBox("true")
            Else
                MsgBox("flase")
            End If
      

  4.   

    是的,我也是想根据<a>标志来找,但是有些复杂情况可能就不好办了,比如这样一个链接<a href="http://www.abcde.com">abcde</a>,实际上我的本意是要判断链接地址"http://www.abcde.com"里面的bc和后面链接文字abcde里的bc,然后做下步处理,那么如果根据标志来找,就比较麻烦了,就是想有没有更高效的办法
      

  5.   

    塞北的雪,你这样是判断文字本身是否是超链接格式,那肯定结果都不是,再举个例子,有这样一段网页文字内容:
    abcedefffghij,我是要判断fff是不是超链接,结果应该是,但如何做到呢?
      

  6.   

    问题可能有些棘手,分值从50加到100,只要给出正确的DEMO代码就散分
      

  7.   


    string htmltext = "我们的<a href=\"http://www.kaila.cn\">祖国</a>是花园。请访问。我们的<a href=\"http://www.kaila.cn\">祖国</a>是花园。请访问。";
    System.Text.RegularExpressions.Regex r = new Regex(@"(<[aA]).*?>.*?(</[aA]>)");
    System.Text.RegularExpressions.MatchCollection mc=r.Matches(htmltext);
    /*System.Text.RegularExpressions.Match m = r.Match(htmltext);
    if(m.Success) {
    Response.Write(m.Captures[0].ToString());
    }*/
    for(int i = 0; i < mc.Count; i++) {
    Response.Write(mc[i].Captures[0].ToString()+"<br>");
    }
    这样可以不?
      

  8.   

    small.fz,辛苦了,我还有些没有说明白,不好意思,就拿你的当例子吧,现在我还有个进程的任务是将这段文字里的“祖国”全部替换成超链接,但是我不想将已经是超链接的“祖国”再替换一次,那样的结果显示会出现混乱,这怎么做呢?
      

  9.   

    http://blog.csdn.net/precipitant/archive/2007/10/12/1821510.aspx
      

  10.   

    多谢塞北的雪和small.fz的指导,散分没商量
      

  11.   

    “祖国”就好比我事先定义好的一个关键字,网页内所有的“祖国”都将被替换为定义好的链接,除了已经是链接的“祖国”,塞北的雪BLOG里的方法已经基本可以解决问题,关键是Match的实例方法NextMatch起了作用,我再修改一下就OK了,另外,StringBuilder的实例方法里没有AppendLine这个方法啊,你用的VS2005吗?我的2003里只有Append方法
      

  12.   

    晕,怎么给分啊,我在管理帖子里将回复的得分改过来了,但点哪里提交啊,哎,CSDN的论坛程序做得有点弄不懂
      

  13.   

    刚建立一个c#和vb技术交流群,欢迎加入! 欢迎高手!群号:47047449  
      

  14.   

    试试这段代码。            string inputString = this.textBox1.Text.Trim();
                string strResult;
                strResult = Regex.Replace(inputString, @"(?!<a[^<>]*?href\s*=\s*[\'\""\s][^\""\']*[\'\""][^<>]*?>)(好人)(?!<\/a>)", "<a href='http://blog.csdn.net/precipitant'>$1</a>");
                MessageBox.Show(inputString + System.Environment.NewLine + strResult );
      

  15.   

                string inputString = "<tr><td><a class='m' href='http://www.csdn.net'>CSDN</a></td><td><a class='m' href='http://blog.csdn.net/precipitant'>塞北的雪</a></td><td><a class='m' href='http://blog.csdn.net/net_lover'>好人</a></td></tr>我市一个好人,你是不是好人呢?";
                string strResult;
                strResult = Regex.Replace(inputString, @"(?!<a[^<>]*?href\s*=\s*[\'\""\s][^\""\']*[\'\""][^<>]*?>)(好人)(?!<\/a>)", "<a href='http://blog.csdn.net/precipitant'>$1</a>");
                MessageBox.Show(inputString + System.Environment.NewLine + strResult );
      

  16.   

    呵呵,这下效果完全达到了,塞北的雪果然是正则高高手,以后我会经常到你BLOG里学习学习~~~