Page 1 sur 1

[R] Remplacer retour chariot par caract. dans un fich. txt

Posté : mer. 30 avr. 2014 09:47
par aulus
Bonjour,

je cherche à formater un fichier texte par un programme autoit de manière à remplacer les retours chariot présents dans le contenu du fichier par le caractère # .
J'ai tenté :

Code : Tout sélectionner

While 1
        $Line = FileReadLine($hFileRead)
        If @error = -1 Then ExitLoop
        $Line = StringReplace($Line, CHR(13), " # ") ; j'ai aussi essayé $Line = StringReplace($Line, @CRLF, " # ")
        FileWrite($hFileWrite, $Line)
WEnd
... sans succès !

Je vous remercie de vos conseils.

Re: [..] remplacer retour chariot par caract. dans un fich.

Posté : mer. 30 avr. 2014 13:40
par mikell
?

Code : Tout sélectionner

$hFileRead = fileread("1.txt")
$txt = StringReplace($hFileRead, @CRLF, " # ")
FileWrite("2.txt", $txt)

Re: [..] remplacer retour chariot par caract. dans un fich.

Posté : mer. 30 avr. 2014 14:02
par jguinch
Attention, les caractères de sauts de ligne peuvent être différents d'un fichier à l'autre, en fonction de la provenance du fichier.
Dans ce topic, Mikell propose une expression qui permettra de gérer les différents cas de figure.

Code : Tout sélectionner

$hFileRead = fileread("1.txt")
$txt = StringRegExpReplace($hFileRead, '\R', " # ")
FileWrite("2.txt", $txt)

Re: [..] remplacer retour chariot par caract. dans un fich.

Posté : mer. 30 avr. 2014 14:08
par mikell
Evidemment Image

Re: [..] remplacer retour chariot par caract. dans un fich.

Posté : mer. 30 avr. 2014 14:58
par aulus
Merci à tous deux

Je ne souhaite pas utiliser fileread car jeveux conserver certains retours chariot selon une condition :

Code : Tout sélectionner

While 1
        $Line = FileReadLine($hFileRead)
        If @error = -1 Then ExitLoop
        $debut = StringLeft($Line,1)
        if $debut = " " Then
              $Line = StringReplace($Line, CHR(13), " # ") ; j'ai aussi essayé $Line = StringReplace($Line, @CRLF, " # ")
              FileWrite($hFileWrite, $Line)
       else
              FileWrite($hFileWrite, $Line)
      endif
WEnd
 
Et là, le remplacement ne se fait pas...

Re: [..] remplacer retour chariot par caract. dans un fich.

Posté : mer. 30 avr. 2014 15:49
par jchd
En utilisant FileReadLine, tu lis le contenu d'une ligne (qui est bien sûr délimitée par @CR ou @LF ou @CRLF). Ton remplacement ne s'effectue donc pas car il n'y a pas de séquence de terminaison dans le contenu de la ligne.

La solution est plutôt dans FileRead suivi de StringRegExp[Replace] qui va bien. Je dois méloigner du clavier : taxi du mercredi... Je passe donc la parole à Mikell et je file.

Re: [..] remplacer retour chariot par caract. dans un fich.

Posté : mer. 30 avr. 2014 16:26
par aulus
Merci

bien embêtant ça !

Re: [..] remplacer retour chariot par caract. dans un fich.

Posté : mer. 30 avr. 2014 16:31
par jchd
Repassant par ici tel le furet :
► Afficher le texte

Re: [..] remplacer retour chariot par caract. dans un fich.

Posté : mer. 30 avr. 2014 17:07
par aulus
alors là... chapeau ! Mon fichier a été parfaitement formaté selon mes souhaits !

Grand merci à tous !