Page 1 sur 1

[ R ] Supprimer les caractères trouvant à droite de "<"

Posté : jeu. 14 déc. 2017 14:12
par Boulanza
Bonjour,
Votre aide svp,
Supprimer tous les caractères qui se trouvent à droite du symbole "<" de chaque ligne du fichier test30.txt
Exemple: nom prénom<nom prenom@gmail.com>,
Merci d’agence.
Cordialement

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : jeu. 14 déc. 2017 14:27
par Boulanza
j'ai testé le code ci-dessous mais ça ne donne rien.
#include <string.au3>
#include <file.au3>
;------------------------------------------------
Dim $resultat
$fichier = @DesktopDir & "\test30.txt"
$file = FileOpen($fichier, 0)
While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    If StringRegExp($line, "<*>") Then $resultat &= $line & @CRLF
Wend
FileClose($fichier)
If FileExists(@DesktopDir & "\sortie.txt") Then FileDelete(@DesktopDir & "\sortie.txt")
Filewrite(@DesktopDir & "\sortie.txt", $resultat)
Exit

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : jeu. 14 déc. 2017 15:07
par mikell
Ce code supprime sur chaque ligne tout ce qui se trouve à droite du premier "<" trouvé ( "<" inclus)

$fichier = @DesktopDir & "\test30.txt"
$file = FileRead($fichier)
$resultat = StringRegExpReplace($file, '<.*', "")
If FileExists(@DesktopDir & "\sortie.txt") Then FileDelete(@DesktopDir & "\sortie.txt")
Filewrite(@DesktopDir & "\sortie.txt", $resultat)

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : jeu. 14 déc. 2017 15:29
par Boulanza
Merci pour votre réponse.
Il faut supprime sur chaque ligne tout ce qui se trouve à droite du premier "<" trouvé sauf ce sui se trouve entre "< >"
Votre code ne supprime pas ce qui se trouve à droite du premier "<", il le copie sur la ligne suivante.

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : jeu. 14 déc. 2017 22:28
par orax
Et comme ceci ?

Code : Tout sélectionner

$fichier = @DesktopDir & "\test30.txt"
$file = FileRead($fichier)

$resultat = StringRegExpReplace($file, "[^<]+<([^>]+)>", "\1")
; ou alors...
; $resultat = StringRegExpReplace($file, "^[^<]+", "\1")

If FileExists(@DesktopDir & "\sortie.txt") Then FileDelete(@DesktopDir & "\sortie.txt")
Filewrite(@DesktopDir & "\sortie.txt", $resultat)

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 09:29
par jchd
Il faut supprime sur chaque ligne tout ce qui se trouve à droite du premier "<" trouvé sauf ce sui se trouve entre "< >"
C'est de la logique shadock ?
Votre code ne supprime pas ce qui se trouve à droite du premier "<", il le copie sur la ligne suivante.
Il faut vraiment nous indiquer un jour votre fournisseur d'extasy, c'est de la bombe !

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 09:31
par jchd
Ceci dit,

Code : Tout sélectionner

If FileExists(@DesktopDir & "\sortie.txt") Then FileDelete(@DesktopDir & "\sortie.txt")
c'est juste :

Code : Tout sélectionner

FileDelete(@DesktopDir & "\sortie.txt")

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 13:41
par mikell
Merci jc
C'est dur parfois Image

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 20:54
par Boulanza
Merci pour votre remarque jchd.
Il faut supprime sur chaque ligne tout ce qui se trouve à gauche du premier "<" trouvé sauf ce qui se trouve entre "< >"
Cordialement.

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 21:30
par Boulanza
Bonsoir orax,
$resultat = StringRegExpReplace($file, "[^<]+<([^>]+)>", "\1") supprime tous ce qui se trouve à gauche de "<" mais toutes les adresses mail (1000) deviennent regroupées sur une seule ligne.
Mohamed 1 <m.12011@gmail.com>,
KHALOUI 2 <m.2@fs-umi.ac.ma>,
Mostafa 3 <m.3@gmail.com>,
Résultat:
m.12011@gmail.comm.2@fs-umi.ac.mam.3@gmail.comm.
Cordialement.

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 21:48
par orax
En effet. Avec ce code, ça devrait mieux marcher.

Code : Tout sélectionner

$resultat = StringRegExpReplace($file, "[^<]+<([^>]+)>.+(\R?)", "\1\2")

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 22:22
par Boulanza
Résultat:
m.12011@gmail.com
m.2@fs-umi.ac.ma
m.3@gmail.com
Il manque juste une virgule à la fin de chaque ligne:
m.12011@gmail.com,
m.2@fs-umi.ac.ma,
m.3@gmail.com,
Pouvez-vous svp l'ajouter, merci.
Cordialement.

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 22:53
par Boulanza
Bonsoir,
$resultat = StringRegExpReplace($file, "[^<]+<([^>]+)>.+(\R?)", "\1\"&","&"\2")
ça marche mais pas pour la dernière ligne.
Pouvez-vous corriger l’erreur. Merci.
Cordialement.

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 22:59
par orax
Je suppose qu'il n'y a pas de virgule à la dernière ligne, c'est pour cette raison que mon code précédent ne marchait pas correctement.
Si je n'ai pas fait d'erreur, les deux codes ci-dessous devraient marcher.

Code : Tout sélectionner

$resultat = StringRegExpReplace($file, "[^<]+<([^>]+)>(\N*)(\R|$)", "\1\2\3")
ou simplement

Code : Tout sélectionner

$resultat = StringRegExpReplace($file, ".+<(.+?)>(,)?", "\1\2")

Re: [ ] Supprimer les caractères trouvant à droite de "<"

Posté : ven. 15 déc. 2017 23:35
par Boulanza
$resultat = StringRegExpReplace($file, ".+<(.+?)>(,)?", "\1\2") il marche mieux, mais vous avez raison, s'il n'y a pas de virgule le code ne marche pas, même avec les deux dernier codes. Je pense qu'il faut forcer le code d'ajouter une virgule si elle n’existe pas, c'est même parfait pour corriger cette erreur. Votre aide est toujours sollicitée. Merci