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]
-
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.
Merci
C'est ce que je cherche mais en 25Cliquez pour agrandir...
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
salut
MerciBonjour 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...
Exact , Apparement le copier coller me fait sauter les crochets et le i
nickel si cela fonctione
++
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)
////////////////
Explication
///////////////////
- ([aeiouyAEIOUY]) : capture la voyelle avant le S.
- s : recherche le S simple.
- ([aeiouyAEIOUY]) : capture la voyelle après le S.
- $1ss$2 : restitue les deux voyelles en doublant le S.
- Global = Vrai : remplace toutes les occurrences, et pas seulement la première.