CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

求助孟子、思归、愚翁、小山、LoveCherry、005,等高手帮忙啊。字符串处理问题!

楼主successsuccess()2006-09-14 18:49:16 在 .NET技术 / ASP.NET 提问

 
  原字符串:  
   
  <td><p   align='left'>[土肥技术]    
  <a   target='_blank'   href="http://www.baidu.com">百度</a>  
  </p>  
  </td>  
   
  事例:  
  <a   target='_blank'   href="http://www.baidu.com?id='1111'">百度</a>  
  <a   target='_blank'   href='http://www.baidu.com'   font=8>百度</a>  
  <a   target='_blank'   href=http://www.baidu.com>百度</a>  
   
  要的结果:  
  string[]   temp=new   string[4];  
  temp[0]=href="     或   temp[0]=href='     或   temp[0]=href=  
  temp[1]="   或   temp[1]='   或   temp[1]=>   或   temp[1]=空  
  temp[2]=>   或   temp[2]=空  
  temp[3]=</a>  
   
  1.要获取http://www.baidu.com前面部分字符href="和后一位字符;  
  2.如果temp[1]的值为“>”号的时候,   temp[2]的值为空,否则取前一位字符;  
   
   
  注:如果原字符串里的   <a   、href=、</a>是小写的   我最后得到的值也应该是小写的。大写就得大写的  
   
  不知道我这么说大家能不能理解。有什么不清楚的可以随时问我。急等。。。 问题点数:100、回复次数:39Top

1 楼angel_xy(小苑)回复于 2006-09-14 18:59:48 得分 10

学习!Top

2 楼successsuccess()回复于 2006-09-14 19:04:20 得分 0

会的不会的都来看看啊...........Top

3 楼bejon(阿牛[如果我懂,必坦诚相告;如果您懂,请不吝赐教。])回复于 2006-09-14 19:15:46 得分 5

看来很简单,只是不知道楼主在讲什么  
  获取字符可以用substringTop

4 楼NoThatNo(不喜欢男人)回复于 2006-09-14 19:21:18 得分 5

不明白,再讲清楚些Top

5 楼dsclub(任搏软)回复于 2006-09-14 19:29:42 得分 5

是想替换href里面的内容吧?  
   
  使用正则表达式吧,相关的信息可以学习一下MSDNTop

6 楼successsuccess()回复于 2006-09-14 19:32:28 得分 0

1.要获取http://www.baidu.com前面部分字符href="和后一位字符;      
  2.如果temp[1]的值为“>”号的时候,     temp[2]的值为空,否则取前一位字符;Top

7 楼successsuccess()回复于 2006-09-14 20:35:27 得分 0

顶啊。~~~~~孟子快来啊.........Top

8 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-09-14 20:55:58 得分 5

直接说出原始需求,是不是要获取链接中的HREF?Top

9 楼Small__Wolf(CSDN眞J⒏縞笑^_^.這嚒點嘚框框譲偶冩紒紹(︶︵︶))回复于 2006-09-14 20:59:39 得分 5

<a   target='_blank'   href="http://www.baidu.com?id='1111'">百度</a>  
  要截取http://www.baidu.com?id='1111'字符之前的     href="   一和http://www.baidu.com?id='1111'   之后的那一个字符  
   
  和"百度"直接的一个字符,之后的</a>Top

10 楼Small__Wolf(CSDN眞J⒏縞笑^_^.這嚒點嘚框框譲偶冩紒紹(︶︵︶))回复于 2006-09-14 21:00:16 得分 5

不知道有没有理解错   ,是这个意思吗?????Top

11 楼successsuccess()回复于 2006-09-14 21:13:50 得分 0

1、<a   target='_blank'   href="http://www.baidu.com?id='1111'">百度</a>  
  2、<a   target='_blank'   href='http://www.baidu.com'   font=8>百度</a>  
  3、<a   target='_blank'   href=http://www.baidu.com   >百度</a>  
  4、<a   target='_blank'   href=http://www.baidu.com>百度</a>  
  是的,基本上就是楼上所说的那个意思。  
   
  四种情况;  
  第一种我要得到的4个字符分别是:href="、"、>、</a>  
  第二种我要得到的4个字符分别是:href='、'、>、</a>  
  第三种我要得到的4个字符分别是:href=、空、>、</a>  
  第四种我要得到的4个字符分别是:href=、>、空、</a>  
   
  Top

12 楼zpengenpz(鹏鹏)回复于 2006-09-14 21:27:33 得分 5

upTop

13 楼www_123du_com(鼠·神·泪)回复于 2006-09-14 21:51:48 得分 5

如果想要href的值就用如下正则表达式:  
   
  (?<=<a   [^>]*?href=(?<sign>["']?))[^>'"]+(?=\k<sign>[^>]*>[^<]*</a>)  
   
  //和你列出的第一个不匹配,个人觉得url中不包含'  
   
  另外,我即不叫孟子,也不叫思归,又不叫愚翁,还不叫小山,而且不叫LoveCherry,还有不叫005,同时还不叫等,我叫   ----   鼠·神·泪。Top

14 楼www_123du_com(鼠·神·泪)回复于 2006-09-14 21:56:40 得分 5

如果想得到“百度”这两个字更简单:  
   
  (?<=<a   [^>]+>)[^<]+(?=</a>)  
   
  //记得指定IgnoreCase选项Top

15 楼amingo(Atlas 新技术讨论群:6455130(群主))回复于 2006-09-14 22:12:00 得分 5

帮LZ顶Top

16 楼cat_hsfz(我的新Blog在http://cathsfz.cnblogs.com)回复于 2006-09-15 00:29:37 得分 5

你是想要正则表达式匹配吧?你先说一下输入字符串可能会怎样,你要匹配其中的哪段。Top

17 楼Csharp110(~泰山~)回复于 2006-09-15 08:19:24 得分 5

upTop

18 楼job_2006(初学.net)回复于 2006-09-15 08:57:31 得分 5

顶Top

19 楼bonnie168(虚拟过客.net)回复于 2006-09-15 09:10:11 得分 5

支持     鼠·神·泪Top

20 楼hanguoji84(北飘)回复于 2006-09-15 09:13:09 得分 5

我想搂主这个帖子的主题不太好,虽然他们都很强,不过有些时候别人也是可以帮助你的,那几位大哥没空看:鼠·神·泪     来帮你了吧?不过你以后提问题不要点名了。Top

21 楼successsuccess()回复于 2006-09-15 09:13:57 得分 0

to:www_123du_com(鼠·神·泪)  
   
      我即不想要得到href的值也不向得到想“百度”这两个字。  
   
   
  to:cat_hsfz(我的Blog在http://purl.oclc.org/NET/cathsfz)    
   
  字符串可能的格式  
  1、<a   target='_blank'   href="http://www.baidu.com?id='1111'">百度</a>  
  2、<a   target='_blank'   href='http://www.baidu.com'   font=8>百度</a>  
  3、<a   target='_blank'   href=http://www.baidu.com   >百度</a>  
  4、<a   target='_blank'   href=http://www.baidu.com>百度</a>  
   
  我要获得4段值  
  1.要获得从href的h开始到http的h结束,这个http的h不包含在内.  
  2,要获得http://www.baidu.com这一点值com后一位的那个字符.  
  3.要获得“百度”之前的“>”这个字符  
  4.要获得</a>  
  Top

22 楼fellowcheng(鹰击长空)回复于 2006-09-15 09:14:51 得分 5

没听明白Top

23 楼petshop4(世界上有10种人,一种懂得什么是二进制 ,一种不懂)回复于 2006-09-15 09:25:55 得分 5

<a   target='_blank'   href=(["|'|   ]?)http://www.baidu.com(.?).*?(>)百度(</a>)  
   
                ∮∮∮∮匹配1∮∮∮∮  
  组0:<a   target='_blank'   href="http://www.baidu.com?id='1111'">百度</a>  
  *******************  
  组1:"  
  *******************  
  组2:?  
  *******************  
  组3:>  
  *******************  
  组4:</a>  
  *******************  
                  ∮∮∮∮匹配2∮∮∮∮  
  组0:<a   target='_blank'   href='http://www.baidu.com'   font=8>百度</a>  
  *******************  
  组1:'  
  *******************  
  组2:'  
  *******************  
  组3:>  
  *******************  
  组4:</a>  
  *******************  
                  ∮∮∮∮匹配3∮∮∮∮  
  组0:<a   target='_blank'   href=http://www.baidu.com   >百度</a>  
  *******************  
  组1:  
  *******************  
  组2:    
  *******************  
  组3:>  
  *******************  
  组4:</a>  
  *******************  
                  ∮∮∮∮匹配4∮∮∮∮  
  组0:<a   target='_blank'   href=http://www.baidu.com>百度</a>  
  *******************  
  组1:  
  *******************  
  组2:  
  *******************  
  组3:>  
  *******************  
  组4:</a>  
  *******************  
  Top

24 楼petshop4(世界上有10种人,一种懂得什么是二进制 ,一种不懂)回复于 2006-09-15 09:29:24 得分 5

楼主的表达能力有待加强  
  (PS   这种这问题不用叫那些大大来吧)Top

25 楼successsuccess()回复于 2006-09-15 09:32:22 得分 0

结贴了....Top

26 楼www_123du_com(鼠·神·泪)回复于 2006-09-15 09:39:14 得分 0

......Top

27 楼successsuccess()回复于 2006-09-15 09:41:26 得分 0

www_123du_com(鼠·神·泪)    
        有问题吗?  
  Top

28 楼test33(隐姓埋名)回复于 2006-09-15 09:44:33 得分 0

先顶起哇`    
  期待高手来。。。  
  Top

29 楼successsuccess()回复于 2006-09-15 09:49:57 得分 0

谢谢test33()    
        不过已经结贴了,高手都取打泡去了Top

30 楼www_123du_com(鼠·神·泪)回复于 2006-09-15 11:34:54 得分 0

//using   System.Text.RegularExpressions;  
  string[]   temp   =   new   string[4];  
   
  Regex   r   =   new   Regex("<a   [^>]*?(?<a1>href=(?<t1>[\"']?))[^>]+\\k<t1>(?<t2>[^>]*)>[^<]*(?<a4></a>)",RegexOptions.IgnoreCase);  
  Match   m   =   r.Match("<a   target='_blank'   href=http://www.baidu.com>百度</a>");  
   
  temp[0]   =   m.Groups["a1"].Value;  
  string   t1   =   m.Groups["t1"].Value;  
  if   (t1   ==   "")  
  {  
          if   (m.Groups["t2"].Value   !=   "")  
          {  
                  temp[1]   =   "";  
          }  
          else  
          {  
                  temp[1]   =   ">";  
          }  
  }  
  else  
  {  
          temp[1]   =   t1;  
  }  
  if   (temp[1]   ==   ">")  
  {  
          temp[2]   =   "";  
  }  
  else  
  {  
          temp[2]   =   ">";  
  }  
  temp[3]   =   m.Groups["a4"].Value;Top

31 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-09-15 11:36:28 得分 0

............Top

32 楼successsuccess()回复于 2006-09-15 13:13:47 得分 0

www_123du_com(鼠·神·泪)    
        你的方法可以做到,但这种情况就有点问题了  
  "<a   target='_blank'   href=http://www.baidu.com   font=8>百度</a>  
  取出来后的值分别是:       href=           >       空       </a>  
  我要的是:   href=           空       >       </a>  
   
  第2个值要取http://www.baidu.com后一位的那个字符.该怎么改造一下.Top

33 楼www_123du_com(鼠·神·泪)回复于 2006-09-15 14:24:08 得分 0

那也就是说string[2]不管在什么情况下都是>,是吧?  
   
  跟你以前说的不同,我是根据你上面写的需求写的代码。  
   
  如果是这样那就改成:  
   
  string[]   temp   =   new   string[4];  
   
  Regex   r   =   new   Regex("<a   [^>]*?(?<a1>href=(?<t1>[\"']?))[^>]+\\k<t1>(?<t2>[^>]*)>[^<]*(?<a4></a>)",RegexOptions.IgnoreCase);  
  Match   m   =   r.Match("<a   target='_blank'   href=http://www.baidu.com>百度</a>");  
   
  temp[0]   =   m.Groups["a1"].Value;  
  temp[1]   =   m.Groups["t1"].Value;;  
  temp[2]   =   ">";  
  temp[3]   =   m.Groups["a4"].Value;Top

34 楼successsuccess()回复于 2006-09-15 14:34:26 得分 0

不是的,以前的那些情况还是不变  
   
  现在就是加一种情况  
  "<a   target='_blank'   href=http://www.baidu.com   font=8>百度</a>  
  当http://www.baidu.com有空格的时候就取这个空格,如果没有的时候就取后面的那个>号  
   
  这种情况取出来的值是:   href=           空       >       </a>  
   
  Top

35 楼www_123du_com(鼠·神·泪)回复于 2006-09-15 15:31:45 得分 0

string[]   temp   =   new   string[4];  
   
  Regex   r   =   new   Regex("<a   [^>]*?(?<a1>href=(?<t1>[\"']?))[^>   ]+\\k<t1>(?<t2>[^>]*)>[^<]*(?<a4></a>)",RegexOptions.IgnoreCase);  
  Match   m   =   r.Match("<a   target='_blank'   href=http://www.baidu.com   abc>百度</a>");  
   
  temp[0]   =   m.Groups["a1"].Value;  
  string   t1   =   m.Groups["t1"].Value;  
  if   (t1   ==   "")  
  {  
          if   (m.Groups["t2"].Value   !=   "")  
          {  
                  temp[1]   =   "";  
          }  
          else  
          {  
                  temp[1]   =   ">";  
          }  
  }  
  else  
  {  
          temp[1]   =   t1;  
  }  
  if   (temp[1]   ==   ">")  
  {  
          temp[2]   =   "";  
  }  
  else  
  {  
          temp[2]   =   ">";  
  }  
  temp[3]   =   m.Groups["a4"].Value;Top

36 楼successsuccess()回复于 2006-09-15 16:11:44 得分 0

OK,这下可以了。不过不知为什么当值是这段就什么都取不出来,其它的都可以.  
  <a   href="http://www.zaza.com.cn/categories/001/200604071807419730.html"   target="_blank"><font   size="3">最好玩的在线小游戏网站   |   zaza在线游戏   |   <font   color=#C60A00>测试</font>..</font></a>  
   
   
   
       
     
  Top

37 楼successsuccess()回复于 2006-09-15 16:18:02 得分 0

正如   petshop4(开始混正则了)   (   )   所说。楼主的表达能力有待加强。由于自己表述的不清楚让大家不知道我在说什么。深表歉意。  
  再这里感谢大家的帮助,特别感谢  
     
    www_123du_com(鼠·神·泪)   (   )      
  耐心的解答。由于结贴太早,我现在的可用分又只有59分,我会拿新号发3贴,请www_123du_com(鼠·神·泪)   接分......到时大家勿以为是在故意倒分....  
  Top

38 楼www_123du_com(鼠·神·泪)回复于 2006-09-15 17:30:56 得分 0

//改为这句试试:  
   
  "<a   [^>]*?(?<a1>href=(?<t1>[\"']?))[^>   ]+\\k<t1>(?<t2>[^>]*)>.*?(?<a4></a>)"  
   
  对于分,我向来是不拒绝的,哈哈。Top

39 楼petshop4(世界上有10种人,一种懂得什么是二进制 ,一种不懂)回复于 2006-09-18 12:02:20 得分 0

我帮你搞定   才给我10分   汗~~Top

相关问题

关键词

得分解答快速导航

  • 帖主:successsuccess
  • angel_xy
  • bejon
  • NoThatNo
  • dsclub
  • Ivony
  • Small__Wolf
  • Small__Wolf
  • zpengenpz
  • www_123du_com
  • www_123du_com
  • amingo
  • cat_hsfz
  • Csharp110
  • job_2006
  • bonnie168
  • hanguoji84
  • fellowcheng
  • petshop4
  • petshop4

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo