Question

J'ai du mal à diviser correctement un QString. À moins que je ne me trompe, pour plusieurs délimiteurs, j'ai besoin d'un regex, et je n'arrive pas à trouver une expression car je suis assez nouveau pour eux.

La chaîne est une entrée de texte d'un fichier:

F 523/845/1 524/846/2 562/847/3 564/848/4

J'ai besoin de chaque numéro séparément pour mettre dans un tableau.

Quelques codes ...

QStringList x;
QString line = in.readLine();
        while (!line.isNull()) {
            QRegExp sep("\\s*/*");

            x =  line.split(sep);

Des pointeurs?

Acclamations

Était-ce utile?

La solution

Changez votre expression régulière comme ceci:

QRegExp sep("(\\s+|/)");

alors x aura chaque numéro.

Autres conseils

J'ai trouvé très utile d'essayer de regex de manière interactive. De nos jours, il y a même beaucoup d'outils en ligne, par exemple: http://gskinner.com/regexr/

Vous pouvez y mettre votre texte de recherche et jouer avec le regex pour voir ce qui correspond quand.

Vous pouvez utiliser la fonction Strtok, qui divise un QString avec un ou plusieurs jetons différents.

Ce serait comme ça:

    QString a = "f 523/845/1 524/846/2 562/847/3 564/848/4";
    QByteArray ba = a.toLocal8Bit();
    char *myString = ba.data();
    char *p = strtok(myString, " /");

    while (p) {
        qDebug() << "p : " << p;
        p = strtok(NULL, " /");
    }

Vous pouvez définir autant de jetons que vous en avez besoin. Pour plus d'informations, visitez la page CPLUSPLUS de cette fonction particulière. http://www.cplusplus.com/reference/cstring/strtok/

Salutations!.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top