1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Remplacer RegEx dans une Chaine

Discussion dans 'Résolution problème & conseils' créé par popoy, Nov 2, 2026, à 1:27 PM.

  1. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    3,165
    J'aime reçus:
    1,713
    Bonjour à tous,
    Je suis en windev 25
    J'ai besoin de remplacer dans une chaine de caractères de plusieurs paragraphes
    tous les "s" simple par un double s "ss" a chaque fois qu'il se trouve entre deux voyelles pour qu'il ne se prononce pas z
    j'ai bien sur pensé à
    Code (Text):
    VérifieExpressionRégulière(sRes, "([aeiou])s([aeiou])")
    et la fonction remplace mais je n'y arrive pas
    Je suis surement pas loin
    Merci de votre aide
     
    Tags:
  2. WDnet

    WDnet Active Member

    Inscrit:
    Mar 9, 2022
    Messages:
    134
    J'aime reçus:
    122
    Salut Popoy, qqchose dans le genre

    [windev]
    TabCaract est un tableau de chaînes = ["a", "e", "i", "o", "u", "y"]
    TabRemplacement est un tableau de chaînes
    Nposition est un entier = 1


    POUR TOUT UnCaractere DE TabCaract
    POUR TOUTE UnCaractere2 DE TabCaract
    TableauAjoute(TabRemplacement, UnCaractere + "s" + UnCaractere2)
    FIN
    FIN

    Nposition = Position(SAI_Texte1, TabRemplacement, Nposition)

    TANTQUE Nposition > 0
    SAI_Texte1 = Remplace(SAI_Texte1, Nposition + 1, 1, "ss")
    Nposition += 1
    Nposition = Position(SAI_Texte1, TabRemplacement, Nposition)
    FIN
    [/windev]
     
  3. trick

    trick Active Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 1, 2018
    Messages:
    196
    J'aime reçus:
    102
    Salut popoy,

    Cela doit fonctionner à partir de la V27 il me semble

    sRegex est une chaîne = "([aeiouyàâäéèêëîïôöùûüÿAEIOUYÀÂÄÉÈÊËÎÏÔÖÙÛÜŸ])s([aeiouyàâäéèêëîïôöùûüÿAEIOUYÀÂÄÉÈÊËÎÏÔÖÙÛÜŸ])"

    stexte est une chaîne = "La maison est rose."+RC+"J'aime le rose et la maison"

    stexte = RegexReplace(stexte, sRegex, "$1ss$2")

    Info(stexte) // Resultat: La maisson est rosse."+RC+RC+"J'aime le rosse et la maisson
     
  4. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    3,165
    J'aime reçus:
    1,713

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Salut popoy,

    Cela doit fonctionner à partir de la V27 il me semble

    sRegex est une chaîne = "([aeiouyàâäéèêëîïôöùûüÿAEIOUYÀÂÄÉÈÊËÎÏÔÖÙÛÜŸ])s([aeiouyàâäéèêëîïôöùûüÿAEIOUYÀÂÄÉÈÊËÎÏÔÖÙÛÜŸ])"

    stexte est une chaîne = "La maison est rose."+RC+"J'aime le rose et la maison"

    stexte = RegexReplace(stexte, sRegex, "$1ss$2")

    Info(stexte) // Resultat: La maisson est rosse."+RC+RC+"J'aime le rosse et la maisson
    Cliquez pour agrandir...
    Merci
    C'est ce que je cherche mais en 25
     
  • JeAn-PhI

    JeAn-PhI New Member

    Inscrit:
    Juin 17, 2020
    Messages:
    24
    J'aime reçus:
    6
    bonjour,
    voici le principe, je n'ai pas trouvé la bonne syntaxe de la regexp cet exemple fonction même si le 's' est entouré de consonne

    [windev]szTmp est une chaîne = "La maison est rose. J'aime le rose et la maison"
    szTmp2 est une chaîne


    szTmp2 = _test(szTmp)

    Info(szTmp2)

    PROCÉDURE INTERNE _test(LOCAL text is string)

    clean_text est chaîne
    parts est tableau de chaîne

    TANTQUE VérifieExpressionRégulière(text, "(.*)(s)(.*)", parts)
    clean_text = parts[3] + clean_text
    clean_text = parts[2]+"s" + clean_text
    text = parts[1]
    FIN

    clean_text = text + clean_text

    RENVOYER clean_text
    FIN[/windev]
     
  • trick

    trick Active Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 1, 2018
    Messages:
    196
    J'aime reçus:
    102

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Merci
    C'est ce que je cherche mais en 25
    Cliquez pour agrandir...
    Ah dommage , sinon essai cecei

    PROCÉDURE CorrigePrononciationTexte(stexte est une chaîne)

    sVoyelles est une chaîne = "aeiouyàâäéèêëîïôöùûüÿAEIOUYÀÂÄÉÈÊËÎÏÔÖÙÛÜŸ"
    sNouveauTexte est une chaîne = ""
    nLen est un entier = Taille(stexte)

    POUR i = 1 _À_ nLen
    c est un caractère = stexte
    bModifie est un booléen = Faux

    // --- RÈGLE 1 : Le 's' entre deux voyelles (devient 'ss') ---
    SI (c = "s" OU c = "S") ET i > 1 ET i < nLen ALORS
    cPrecedent est un caractère = stexte[i-1]
    cSuivant est un caractère = stexte[i+1]

    SI Position(sVoyelles, cPrecedent) > 0 ET Position(sVoyelles, cSuivant) > 0 ALORS
    sNouveauTexte += "ss"
    bModifie = Vrai
    FIN
    FIN

    // Si aucune règle spécifique n'a modifié le caractère, on le recopie tel quel
    SI bModifie = Faux ALORS
    sNouveauTexte += c
    FIN
    FIN

    RENVOYER sNouveauTexte


    ****************
    Appel de la procedure

    stexte est une chaîne = "La maison est rose."+RC+"J'aime le rose et la maison"
    Info(CorrigePrononciationTexte(stexte)) // Resultat: La maisson est rosse."+RC+"J'aime le rosse et la maisson
     
  • Partager cette page

    Chargement...