Problème avec "Replace"

Le
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:Temptest.txt", ForWriting)
f.Write Replace(st, "<refdos>", "<refdos>Bon numéro</refdos>")

Merci pour votre aide.

FRED.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thierry DEMAN [MVP]
Le #710339
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("^ 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" 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.



Stephane
Le #710338
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

Fred
Le #710120
Bonjour,

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

A bientôt,

FRED.


"Thierry DEMAN [MVP]" 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("^ 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" 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.






Publicité
Poster une réponse
Anonyme