Snippets C++/Qt : Conversion de date et extraction de nom et prénoms

Dans le cadre d'un projet de convertisseur de fichier tableur en GEDCOM j'ai eu besoin de deux fonction pour convertir des dates et pour extraire le nom et le prénom d'une même chaine. Je l'ai ai codés en C++ avec la framework Qt.

Fonction de conversion de "Prénom même composé NOM" en "Prénom-Même-Composé" et "NOM" :

// Extraction du nom de famille et du prénom
// Extracts the familly name et the first name
// @param : QString : Firstname FAMILLY NAME
// @param : int     : 1 get the NAME, 2 get the first name
// GNU General Public License
QString conv::prenomNom(QString nom, int type)
{
        if(!nom.contains(" ")) return nom;

        //Sépare les différents mots composant le nom et le prénom
        QStringList motsNom = nom.split(" ");

        //Récupère les mots tout en MAJUSCULE comme nom
        QString NomDeFamille("");
        QString prenom("");

        //S'il y a deux lettres majuscules de suite, on a un nom :
        QRegExp majTest ("[A-Z]{2}");
        int nombreNom = 0;
        int nombrePrenom = 0;
        for(int n=0; n < motsNom.size(); n++)
        {
            QString nomATester = motsNom.at(n);

            //C'est un nom
            if(nomATester.contains(majTest))
            {
                if(nombreNom > 0) NomDeFamille.append("-");
                NomDeFamille.append(nomATester);
            }
            else
            {
                if(nombrePrenom > 0) prenom.append("-");
                prenom.append(nomATester);
                nombrePrenom++;
            }
        }

        //Envoie le nom de famille :
        if(type == 1) return NomDeFamille;

        //Envoie le prénom :
        if(type == 2) return prenom;

        return "";
}

Fonction de conversion de date : DD MM YYYY --> DD MON YYYY

//Conversion de la date en format standard :
//@param  : QString : DD MM YYYY
//@return : QString : DD MON YYYY
// GNU General Public License
QString conv::convDate(QString date)
{
    QStringList dateS = date.split(" ");
    QString dateConv("");

    if(dateS.size() > 0)
    {
        int three = dateS.at(0).toInt();
        if(three == 0) return "";
        dateConv.append(dateS.at(0));
    }

    if(dateS.size() > 1)
    {
        QStringList monthList;
        monthList << "" << " JAN " << " FEB " << " MAR " << " APR " << " MAY " << " JUN "
                  << " JUL " << " AUG " << " SEP " << " OCT " << " NOV " << " DEC ";

        QString month = dateS.at(1);
        int monthNum = month.toInt();
        if(monthNum > 0 && monthNum < 13)
            dateConv.append(monthList.at(monthNum));
    }

    if(dateS.size() > 2)
    {
        int three = dateS.at(2).toInt();
        if(three > 0)
            dateConv.append(QString::number(three));
    }

    return dateConv;
}

Je suggère aussi

Écrire un commentaire

Quelle est la première lettre du mot ebrh ? :