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,166
    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:
    197
    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,166
    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:
    197
    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
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

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

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


    ca fonctionne après correction d'une ligne
    Code (Text):
    c est un caractère = stexte[i]
     
  • trick

    trick Active Member
    MEMBRE WX DUMP TEAM

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

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

    salut
    Merci

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


    ca fonctionne après correction d'une ligne
    Code (Text):
    c est un caractère = stexte[i]
    Cliquez pour agrandir...
    Salut,
    Exact , Apparement le copier coller me fait sauter les crochets et le i
    nickel si cela fonctione
    ++
     
  • asg

    asg New Member

    Inscrit:
    Avr 16, 2023
    Messages:
    8
    J'aime reçus:
    5
    La solution consiste à utiliser l'objet Automation VBScript.RegExp, compatible avec ces versions windev 25 , 24 ;23, etc...

    sRes est une chaîne = "maison poison visage"

    oRegex est un objet Automation "VBScript.RegExp"

    oRegex>>Pattern = "([aeiouyAEIOUY])s([aeiouyAEIOUY])"
    oRegex>>Global = Vrai
    oRegex>>IgnoreCase = Faux

    sRes = oRegex>>Replace(sRes, "$1ss$2")

    Trace(sRes)
     
  • Partager cette page

    Chargement...