2014-09-15 2 views

답변

2

이 시도 :

QRegExp rx("[a-z]+\:.+"); 
QString ss = "roll:3.23423"; 

int poss = 0; 
while ((poss = rx.indexIn(ss, poss)) != -1) { 
    qDebug()<< rx.cap(0).split(":").last(); 
    poss += rx.matchedLength(); 
} 

출력 :

"3.23423" 

그러나 한 사람이 당신은 또한 사용할 수 있도록 split()가 느릴 수 있다고 나에게 말했다 :

QRegExp rx("[a-z]+\:.+"); 
QString ss = "roll:3.23423"; 

int poss = 0; 
while ((poss = rx.indexIn(ss, poss)) != -1) { 

    QString g = rx.cap(0); 
    int p = rx.cap(0).indexOf(":"); 
    qDebug()<< g.mid(p+1); 
    poss += rx.matchedLength(); 
} 

을 그것은해야한다 빠릅니다.

업데이트 (이전). 다음 루프를 사용하십시오 :

while ((poss = rx.indexIn(ss, poss)) != -1) { 

    QString g = rx.cap(0); 
    int p = rx.cap(0).lastIndexOf(":"); 
    qDebug()<< g.mid(0,p); 
    poss += rx.matchedLength(); 
} 
+0

thnx! ":"전에 어떻게 문자열을 얻을 수 있습니까? – user1824542

+0

@ user1824542 제발 편집하십시오. – Chernobyl

관련 문제