2016-05-09 1 views
0

J'essaie de me débarrasser des parenthèses et des mots contenus dans ces parenthèses dans un QString. Pourrais-tu m'aider s'il te plaît?Comment se débarrasser des parenthèses et de leur contenu dans un QString?

var1.at(0) = " MainWindow(QWidget *parent) : "; 

QStringList var2 = var1.at(0).split(QRegExp("\("), QString::SkipEmptyParts); 

Pour cet exemple, je suis en train d'obtenir le nom de la fonction qui est seulement: MainWindow

je ne pouvais pas le résoudre avec:

QRegExp("("); 
QRegExp("\("); 
QRegExp("\\("); 
QRegExp("\(("); 
+0

Qu'est-ce que ** ** vous essayez vraiment de faire ici? Ce n'est pas que le traitement de la chaîne est une science de fusée, mais il semble que votre but ultime est de faire quelque chose avec la chaîne finale. Qu'Est-ce que c'est? – IInspectable

+0

Ce n'est pas la chaîne finale, je demande juste comment ajouter regexp avec des parenthèses – goGud

+0

que voulez-vous dire exactement par "parenthèses divisées"? Quel est le résultat que vous attendez de votre exemple de chaîne? – bolov

Répondre

1

Pour obtenir le nom de la fonction que vous pouvez utiliser ce qui suit, si le nom de votre fonction est le premier identificateur de la chaîne:

QString s(" MainWindow(QWidget *parent) : "); 
QRegExp e("(\\w+)"); 
if(e.indexIn(s) != -1) { 
    qDebug() << e.cap(1); // MainWindow 
} 

Si vous voulez tout obtenir jusqu'à '(', vous pouvez utiliser:

QString s(" MainWindow(QWidget *parent) : "); 
QRegExp e("([^(]+)"); 
if(e.indexIn(s) != -1) { 
    qDebug() << e.cap(1).trim(); 
} 
+0

@bolov: "J'essaie d'obtenir le nom de la fonction qui est MainWindow" (c) auteur – AnatolyS

+0

Une solution qui ** n'utilise pas ** les expressions régulières est probablement plus facile à écrire, plus sûre à utiliser et plus facile à utiliser. lis. Il semble que les gens utilisent des expressions régulières pour tout, depuis les chaînes de jetons à la cire de leurs voitures pour améliorer leur attrait sexuel. Les expressions régulières sont un excellent outil pour certains problèmes. Ce n'est probablement pas l'un de ces problèmes. – IInspectable