QT4 在字符串中查找EMAIL地址(转贴增加一个处理方法)

今天在讨论组有人提出这个话题,后来,为了测试,就做了一个初稿,简单的字符串还是可以找到的。


void  MainWindow::on_btnFindEmail_clicked() {
    QString t(
"<b>email@email.com</b>emaril:email2@email2.com  email3@email3.com");
    QString r(
"");
    
int p, p1=-1, p2=-1, lastPos=0;
    
bool endOfAll = false;
    
    
    
while(true){
        p
=t.indexOf('@', lastPos);
        
if(endOfAll)break;
        
if(p<0)break;

        
for(int i=p-1; i>0; i--){
            
if(t[i]=='>'
                
|| t[i]==' '
                
|| t[i]==' '
                
|| t[i]==' '
                
|| t[i]==' '
                
|| t[i]==':'){
                p1
=i+1;
                
break;
            }

        }

        
for(int i=p+1; i<t.size(); i++){
            
if(i==t.size()-1{
                endOfAll 
= true;
                i
++;
            }

            
if(t[i]=='<'
                
|| t[i]==' '
                
|| t[i]==':'
                
|| endOfAll){
                p2
=i;
                
break;
            }

        }


        
if(p1>=0 && p2>=p1){
            
//应该将得到的结果对比Email地址的格式,如果正确,就是EMAIL地址,否则,就不是。
            r.append(tr(" @=%1 p1=%2 p2=%3  ").arg(p).arg(p1).arg(p2) );
            r.append( t.mid(p1, p2
-p1) );
        }

        
        lastPos 
= p2+1;
        p1
=-1;
        p2
=-1;
    }

    ui.edResultEmail
->setText(r);
}






[转自GOOGLE里面的一个QT论坛]
规则表达方式方法:
QStringList MainWindow::searchMail(QString text){
     QRegExp reg("[A-z0-9_/.-]+@[A-z0-9/.]+");
     int startPos=0;
     int mailPos=0;
     QStringList rs;

     while(true){
          mailPos=reg.indexIn(text,startPos);
          if(mailPos<0)
          {
               break;
          }
          rs.append(reg.cap(0));
          startPos=mailPos+rs.last().size();
     }
     return rs;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值