Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème avec "Replace"

3 réponses
Avatar
Fred
Bonjour,

Dans le script ci-desosus, je rencontre les deux problèmes suivants (qui
sont d'ailleurs liés...):

- Je cherche une balise xml "<refdos>Mauvais numéro</refdos>" pour la
remplacer par "<refdos>Bon numéro</refdos>"
Le problème est que je n'arrive pas à remplacer la totaliré de la balise,
mais seulement le texte que je recherche "<refdos".

- Je souhaiterais, dans l'absolu, pouvoir remplacer "<refdos>Mauvais
numéro</refdos>" par une variable ainsi que "<refdos>Bon numéro</refdos>"
par une variable également.

Mon fichier contient plusieurs lignes - balises:
<>1</>
<>2</>
<>3</>
<>4</>
"<refdos>Mauvais numéro</refdos>"
<>5</>
<>6</>

Et bien entendu, je souhaite seulement remplacer celle qui m'interresse sans
écraser les autres...

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\Temp\test.txt", ForWriting)
f.Write Replace(st, "<refdos>", "<refdos>Bon numéro</refdos>")

Merci pour votre aide.

FRED.

3 réponses

Avatar
Thierry DEMAN [MVP]
Bonjour,

au lieu d'utiliser la fonction "Replace(...)", tu devrais utiliser la
méthode "Replace" d'un objet d'expression régulière "regExp.replace(...)".
L'aide VB explique un peu les expressions régulières.


Voici l'exemple de VbScript adapté en fonction de ton cas!

Function ReplaceTest(patrn, replStr)
Dim regEx, str1 ' Crée des variables.
str1 = "<refdos>mauvais numéro</refdos>"
Set regEx = New RegExp ' Crée l'expression régulière.
regEx.Pattern = patrn ' Définit les critères.
regEx.IgnoreCase = True ' Ignore la casse.
ReplaceTest = regEx.Replace(str1, replStr) ' Effectue le remplacement.
End Function

wscript.echo ReplaceTest("^<refdos>.*</refdos>$", "<refdos>Bon
Numéro</refdos>")

^ =début de ligne
$= fin de ligne
/ = slash protégé
< = signe < protégé
> = signe > protégé

A bientôt,




--
Thierry DEMAN-BARCELÒ
Exchange MVP, MCSE2003+M,MCSE2003+S,MCDBA,MCITP dba&Dev
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org

"Fred" a écrit dans le message de
news:
Bonjour,

Dans le script ci-desosus, je rencontre les deux problèmes suivants (qui
sont d'ailleurs liés...):

- Je cherche une balise xml "<refdos>Mauvais numéro</refdos>" pour la
remplacer par "<refdos>Bon numéro</refdos>"
Le problème est que je n'arrive pas à remplacer la totaliré de la balise,
mais seulement le texte que je recherche "<refdos".

- Je souhaiterais, dans l'absolu, pouvoir remplacer "<refdos>Mauvais
numéro</refdos>" par une variable ainsi que "<refdos>Bon numéro</refdos>"
par une variable également.

Mon fichier contient plusieurs lignes - balises:
<>1</>
<>2</>
<>3</>
<>4</>
"<refdos>Mauvais numéro</refdos>"
<>5</>
<>6</>

Et bien entendu, je souhaite seulement remplacer celle qui m'interresse
sans écraser les autres...

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:Temptest.txt", ForWriting)
f.Write Replace(st, "<refdos>", "<refdos>Bon numéro</refdos>")

Merci pour votre aide.

FRED.



Avatar
Stephane
Bonjour,

au lieu d'utiliser la fonction "Replace(...)", tu devrais utiliser la
méthode "Replace" d'un objet d'expression régulière
"regExp.replace(...)". L'aide VB explique un peu les expressions
régulières.


Ouai euh vraiment un peu, même beaucoup très peu :-))

Ton exemple m'en a appris bien plus que la doc !!

Merci beaucoup.

Stephane

Avatar
Fred
Bonjour,

Merci beaucoup pour ta réponse.
Je me plonge dans l'exemple et teste cela.

A bientôt,

FRED.


"Thierry DEMAN [MVP]" a écrit dans le message
de news:
Bonjour,

au lieu d'utiliser la fonction "Replace(...)", tu devrais utiliser la
méthode "Replace" d'un objet d'expression régulière "regExp.replace(...)".
L'aide VB explique un peu les expressions régulières.


Voici l'exemple de VbScript adapté en fonction de ton cas!

Function ReplaceTest(patrn, replStr)
Dim regEx, str1 ' Crée des variables.
str1 = "<refdos>mauvais numéro</refdos>"
Set regEx = New RegExp ' Crée l'expression régulière.
regEx.Pattern = patrn ' Définit les critères.
regEx.IgnoreCase = True ' Ignore la casse.
ReplaceTest = regEx.Replace(str1, replStr) ' Effectue le remplacement.
End Function

wscript.echo ReplaceTest("^<refdos>.*</refdos>$", "<refdos>Bon
Numéro</refdos>")

^ =début de ligne
$= fin de ligne
/ = slash protégé
< = signe < protégé
> = signe > protégé

A bientôt,




--
Thierry DEMAN-BARCELÒ
Exchange MVP, MCSE2003+M,MCSE2003+S,MCDBA,MCITP dba&Dev
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org

"Fred" a écrit dans le message de
news:
Bonjour,

Dans le script ci-desosus, je rencontre les deux problèmes suivants (qui
sont d'ailleurs liés...):

- Je cherche une balise xml "<refdos>Mauvais numéro</refdos>" pour la
remplacer par "<refdos>Bon numéro</refdos>"
Le problème est que je n'arrive pas à remplacer la totaliré de la balise,
mais seulement le texte que je recherche "<refdos".

- Je souhaiterais, dans l'absolu, pouvoir remplacer "<refdos>Mauvais
numéro</refdos>" par une variable ainsi que "<refdos>Bon numéro</refdos>"
par une variable également.

Mon fichier contient plusieurs lignes - balises:
<>1</>
<>2</>
<>3</>
<>4</>
"<refdos>Mauvais numéro</refdos>"
<>5</>
<>6</>

Et bien entendu, je souhaite seulement remplacer celle qui m'interresse
sans écraser les autres...

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:Temptest.txt", ForWriting)
f.Write Replace(st, "<refdos>", "<refdos>Bon numéro</refdos>")

Merci pour votre aide.

FRED.