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

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
$hFileRead = fileread("1.txt")
;~ $hFileRead = "abc" & @CRLF & " def ghi" & @CR & " klm" & @LF & "nop"
$txt = StringRegExpReplace($hFileRead, '(?m)(^ \N*)(\R)', "$1 # ")
;~ ConsoleWrite($txt & @LF)
FileWrite("2.txt", $txt)
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 !