IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Remplacements en série avec QString

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Par défaut Remplacements en série avec QString
    Bonsoir à tous.
    Je viens encore de me faire prendre au piège de la condition if.
    Soient les QStrings suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString str1 = "§&&$$%$§&";
    QString str2 = str1.append("ppp");
    Je voudrai en effet remplacer les caractères de str2 par les chiffres 1, 2, 3, 4 selon la formule suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if(str2.contains("§", Qt::CaseInsensitive))
            {
               str2.replace("§", "1", Qt::CaseInsensitive);
            }
            if(str2.contains("&", Qt::CaseInsensitive))
            {
               str2.replace("&", "2", Qt::CaseInsensitive);
            }
            if(str2.contains("%", Qt::CaseInsensitive))
            {
               str2.replace("%", "3", Qt::CaseInsensitive);
            }
            if(str2.contains("$", Qt::CaseInsensitive))
            {
               str2.replace("$", "4", Qt::CaseInsensitive);
            }
     out<<str1<<"\r\n"<<"-------------------------"<<"\r\n"<<str2<<"\r\n";
    1- Tout d'abord, j'ai posé la contition de fin de chaine comme suit:
    le programme a planté. De même lorsque la condition selon laquelle chaque fois que la fin de chaine n'est pas atteinte a été posée comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(str2.end != false)
    le programme a planté.
    Idem pour la condition suivante:
    2- Lorsque j'ai donc enlevé ces conditions indiquant la fin de la chaine, j'ai obtenu à la compilation le remplacement SEULEMENT pour les deux derniers if.
    Ainsi, je vous serai reconnaissant si vous m'aidiez à:
    - Mieux indiquer la fin de la chaine.
    - Comprendre pourquoi les deux premiers if ne remplacent pas les "§" et "&" respectivement.

    Merci d'avance!

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Je ne comprends pas ce que vient faire \0 dans l'histoire ? Tu n'es pas en C avec des char* là, tu ne parcours pas les caractères d'une chaine, quand tu dis string.replace() ça remplace dans la string et puis c'est tout. Inutile également de tester "contains".
    D'ailleurs je pense que si tu fais un remplacement de caractères, utilise des caractères en paramètre de replace() à au lieu de chaines. Quant à la casse, inutile de s'en occuper ici vu que tu ne traites pas de lettre (c'est encore plus rapide en case sensitive).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QString str1 = "§&&$$%$§&";
    QString str2 = str1.append("ppp").replace('§', '1').replace('&', '2').replace('%', '3').replace('$', '4');

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Par défaut
    Merci Troudhyl pour l'explication.
    Ca marche.
    Merci infiniment

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Rechercher et remplacer plusieurs occurences avec expression
    Par nabab dans le forum Langage
    Réponses: 2
    Dernier message: 12/12/2005, 17h12
  2. Problème pour piloter le port série avec TComPort
    Par Jayceblaster dans le forum Composants VCL
    Réponses: 6
    Dernier message: 08/12/2005, 14h21
  3. [RegEx] Remplacer une chaîne avec preg_replace
    Par GregPeck dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2005, 12h21
  4. Comment écouter un port série avec flash ?
    Par Alex01 dans le forum Flash
    Réponses: 11
    Dernier message: 07/10/2005, 16h11
  5. liaison Série avec kernell32
    Par Emcy dans le forum Windows
    Réponses: 8
    Dernier message: 31/08/2005, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo