Vbs chaine de caractères

Fermé
bergo Messages postés 8 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 14 mars 2008 - 11 juil. 2007 à 16:02
bergo Messages postés 8 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 14 mars 2008 - 12 juil. 2007 à 16:41
bonjour,

je voudrais remplacer, sur une ligne d'un fichier, une chaine de caractères inconnue et de longueur variable (???????????) inserrée entre 2 chaines connues (CHAINE1 et CHAINE2), par une nouvelle chaine (yyy):
exemple: CHAINE1????????????CHAINE2 deviendrait CHAINE1yyyCHAINE2
( les ? correspondent à la chaine inconnue)

mon script:
---------------------------------------------------------------------------
Dim fso, contenu
Dim st
Const ForReading=1,ForWriting=2,ForAppending=8
Set objFSO = createObject("Scripting.FileSystemObject")
Set contenu = objFSO.OpenTextFile("mon fichier",ForReading)
Do While Not contenu.AtEndOfStream
st = contenu.readAll
Loop
contenu.Close

Set contenu = objFSO.OpenTextFile("mon fichier",ForWriting,true)
Contenu.Write replace(st,"CHAINE1??????????CHAINE2","CHAINE1yyyCHAINE2")
Contenu.Close

Set Contenu = Nothing
Set objFSO = Nothing
-------------------------------------------------------------------------------------------------
comment remplacer les ????
A voir également:

5 réponses

Trouver la position de Chaine1 et de Chaine 2, et remplacer ce qui se trouve entre les 2 positions avec la fonction Replace.
0
la chaine CHAINE1 est en début de ligne, et la chaine CHAINE2 est en fin de ligne
0
bergo Messages postés 8 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 14 mars 2008
12 juil. 2007 à 09:27
je voudrais remplacer, sur une ligne d'un fichier, une chaine de caractères inconnue et de longueur variable
(???????????) inserrée entre 2 chaines connues (CHAINE1 et CHAINE2), par une nouvelle chaine (yyy):
exemple: CHAINE1????????????CHAINE2 deviendrait CHAINE1yyyCHAINE2
( les ? correspondent à la chaine inconnue)

la chaine CHAINE1 est en début de ligne, et la chaine CHAINE2 est en fin de ligne

quelle serait la syntaxe pour remplacer tous les caractères compris entre la chaine "CHAINE1" et la chaine "CHAINE2", sachant que ce nombre de caractères n'est pas fixe;

merci par avance
0
Et bien si chaine 1 est TOUJOURS au début, alors tu peux extraire CHAINE1 de ta chaine entier, il te restera donc ??????????CHAINE2.
Ensuite tu peux extraire également CHAINE2, afin qui ne te reste que ????????.

Tu peux donc utiliser la fonction inStr de vb6, qui te permet de récupérer la position d'une chaine de caratère (par exemple CHAINE1) dans une autre chaine (ta chaine finale).

Syntax :

Dim positionChaine2 as integer
positionChaine2 = InStr ("CHAINE2","????????????CHAINE2 ")

Ensuite, une fois que tu as récupéré la position de CHAINE2, alors tu peux utiliser la fonction mid de vb6,
qui te permet de récupérer une chaine de caractère entre 2 positions.

Syntax :

Mid(string, start[, length])

Ce qui te donne, pour ton exemple :

Mid("????????????CHAINE2",1,positionChaine2)

Bon le code c'est un peu pret ca, après c'est à toi de bien tester ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bergo Messages postés 8 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 14 mars 2008
12 juil. 2007 à 16:41
désolé, je sèche

je sais seulement que ma chaine à remplacer commence au 8e caractère en partant du début de la ligne, et fini au 8e caractère en partant de la fin de la ligne (mon exemple: CHAINE1??????????CHAINE2 ).
je ne connais pas le contenu de la chaine à remplacer ni son nombre de caractère.

voila!
0