[VBS][RESOLU] Fonction "Replace" non-case-sensitive

Fonction "Replace" non-case-sensitive [VBS][RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 28-11-2005 à 12:54:11    

Salut,
 
j'ai besoin de faire un Search&Replace dans une chaine qui ne soit pas Case sensitive...
 
La fonction

Replace([i]Source[/i],[i]Search[/i],[i]Replace[/i])

considère différentes les chaines "mon nom" "Mon Nom" "MON NOM"... et dans mon cas, c'est ennuyeux
 
J'ai essayé de fair une Resultat = Replace(UCase(Source),UCase(Search),Replace) mais cela fait passer toute la chaine Resultat en UCase ce qui n'est pas le but de la manoeuvre.
 
Je ne vois plus comme solution que d'écrire entièrement une fonction qui fasse une comparaison caractere par caractere (ce qui me permet pour chaque caractere de tester les 2 possibilités

if lcar=car then ...
if lcar=UCase(car) then ...


en bouclant sur la longueure du paramètre Search à la première occurente trouvée
(La chaine à tester peut ressempler à AbCDefgHIJKlMon NOMopqrst)
Mais c'est super laborieux !  :sleep:  
 
Quelqu'un connait il un meilleur moyen ?


Message édité par madmartigan le 28-11-2005 à 13:24:38

---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Marsh Posté le 28-11-2005 à 12:54:11   

Reply

Marsh Posté le 28-11-2005 à 13:33:03    

:heink: OK, j'ai trouvé...
la fonction Replace admet d'autres arguments
 
Replace(Source,Searche,Replace,Start,Count,Type).
Type = 0 pour une comparaison binaire (donc Case sensitive)
Type = 1 pour une comparaison texte (donc case non-sensitive)
J'avais déjà essayé un

Replace("EssaY de replace","AY","ai",,,1)


et je tombais sur un "error type mismatch"  :heink:  
 
En fait, les trois derniers params semblent indissociables : soit on les met tous, soit aucun.
 
avec un

Replace("EssaY de replace","AY","AI",1,-1,1)


ça marche...
 :hello:


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed