je débute dans la programmation et j'aurais voulu savoir
s'il existe une fonction toute prête qui permette de
remplacer automatiquement tout les accents d'une chaine de
caractère. Ex: tête -> tete, éclipse-> eclipse,....
Je sais qu'il existe la fonction replace, mais elle ne
permet de changer qu'un type de lettre à la fois et
sachant qu'il y a au moins 16 lettres avec des accents, je
me vois mal faire 16 replace.
merci
Oh la la, ces p'tits jeunes qui s'arrêtent devant la première difficulté!
;+)
Aucun sens de l'effort ! ;+)
Bien sûr que si, que tu dois te payer n "replace" (ou équivalent)!
Car il n'y a aucune règle logique de codage des lettres accentuées par
rapport aux non accentuées.
Mais on n'en meurt pas pour autant...
Il suffit d'utiliser des tableaux de correspondance et une boucle.
Exemple :
oldcar=array( _
"à", "â", "ä", "á","æ", _
"é", "è", "ê", "ë", _
"î","ï", _
"ô","ö", _
"û", "ü", "ù", _
"ÿ", _
"ç", _
"ñ")
newcar=array( _
"a", "a", "a", "a","a", _
"e", "e", "e", "e", _
"i","i", _
"o","o", _
"u", "u", "u", _
"y", _
"c", _
"n")
For i = 0 To Ubound(oldcar)
str=Replace(str,oldcar(i),newcar(i))
str=Replace(str,ucase(oldcar(i)),ucase(newcar(i)))
Next
NB: ici j'ai conservé la casse
D'où :
- l'absence de paramètre VBtextCompare dans Replace
- la 2ème ligne de remplacement relative aux majuscules
Si on passe tout en minuscules, cela se simplife :
For i = 0 To Ubound(oldcar)
str=Replace(str,oldcar(i),newcar(i),1,-1,VBTextCompare)
Next
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.net Jean-Clau...@wanadoo.fr *
JC.Be...@free.fr
Je suppose que vous ętes en VBScript.
Ce que vous dites est vrai pour la *fonction* Replace de VBScript mais la *méthode* Replace de l'objet RegExp permet de traiter en
*une* passe plusieurs caractčres et ainsi accélérer la procédure (voir script qui suit :
http://automation.eu.tf/retirer_accents_chaine.vbs ).
Fonction Replace de VBScript :
http://msdn.microsoft.com/library/en-us/script56/html/vsfctReplace.asp
Methode Replace de l'objet RegExp (Expression réguličre) :
http://msdn.microsoft.com/library/en-us/script56/html/vsmthReplace.asp
'---8<---Retirer_Accents_Chaine.VBS---Jean-JMST---
'http://automation.eu.tf/retirer_accents_chaine.vbs
MsgBox InputBox("")
Function Retirer_Accents_Chaine(chaine)
chaine=Retirer_Accents(chaine,"a","ā|á|â|ã|ä|å")
chaine=Retirer_Accents(chaine,"e","č|é|ę|ë")
chaine=Retirer_Accents(chaine,"i","ė|í|î|ï")
chaine=Retirer_Accents(chaine,"o","ō|ó|ô|õ|ø")
chaine=Retirer_Accents(chaine,"u","ų|ú|û|ü")
chaine=Retirer_Accents(chaine,"y","ý|ĸ")
chaine=Retirer_Accents(chaine,"į","c")
chaine=Retirer_Accents(chaine,"æ","ae")
chaine=Retirer_Accents(chaine,"ņ","n")
chaine=Retirer_Accents(chaine,"ß","ss")
Retirer_Accents_Chaine=Retirer_Accents(chaine,"o","oe")
End Function
Function Retirer_Accents(texte,caractere,liste)
With New RegExp
.IgnoreCase=False
.Global=True
.MultiLine=True
.Pattern=LCase(liste)
texte=.Replace(texte,LCase(caractere))
.Pattern=UCase(.Pattern)
Retirer_Accents=.Replace(texte,UCase(caractere))
End With
End Function
'---8<---Retirer_Accents_Chaine.VBS---Jean-JMST---
Amicalement,
Jean - JMST
Belgium
"Nico" <anon...@discussions.microsoft.com> a écrit dans le message de news:12a6001c41624$6880c600$a601...@phx.gbl...
Bonjour ā tous,
je débute dans la programmation et j'aurais voulu savoir
s'il existe une fonction toute pręte qui permette de
remplacer automatiquement tout les accents d'une chaine de
caractčre. Ex: tęte -> tete, éclipse-> eclipse,....
Je sais qu'il existe la fonction replace, mais elle ne
permet de changer qu'un type de lettre ā la fois et
Oups ... désolé, mauvaise version du code, voici le bon :
'---8<---Retirer_Accents_Chaine.VBS---Jean-JMST---
'http://automation.eu.tf/retirer_accents_chaine.vbs
MsgBox Retirer_Accents_Chaine(InputBox(""))
Function Retirer_Accents_Chaine(chaine)
chaine=Retirer_Accents(chaine,"a","ā|á|â|ã|ä|å")
chaine=Retirer_Accents(chaine,"e","č|é|ę|ë")
chaine=Retirer_Accents(chaine,"i","ė|í|î|ï")
chaine=Retirer_Accents(chaine,"o","ō|ó|ô|õ|ø")
chaine=Retirer_Accents(chaine,"u","ų|ú|û|ü")
chaine=Retirer_Accents(chaine,"y","ý|ĸ")
chaine=Retirer_Accents(chaine,"c","į")
chaine=Retirer_Accents(chaine,"ae","æ")
chaine=Retirer_Accents(chaine,"n","ņ")
chaine=Retirer_Accents(chaine,"ss","ß")
Retirer_Accents_Chaine=Retirer_Accents(chaine,"oe","o")
End Function
Function Retirer_Accents(texte,caractere,liste)
With New RegExp
.IgnoreCase=False
.Global=True
.MultiLine=True
.Pattern=LCase(liste)
texte=.Replace(texte,LCase(caractere))
.Pattern=UCase(.Pattern)
Retirer_Accents=.Replace(texte,UCase(caractere))
End With
End Function
'---8<---Retirer_Accents_Chaine.VBS---Jean-JMST---
Amicalement,
Jean - JMST
Belgium
"Jean" <http://cour...@jmst.be.tf> a écrit dans le message de news:uPwfmnjF...@tk2msftngp13.phx.gbl...