Question couper une chaine après un délimiteur specifique.

Plus d'informations
il y a 3 ans 6 mois #30003 par rogerdu59
Bonjour,

j'aimerais prendre une chaine dans un fichier texte, tout supprimer après un délimiteur spécifique qui apparait plusieurs fois dans la chaine concernée.
et réécrire le résultat dans un nouveau fichier texte. j'ai essayé pas mal de fonctions (split, replace, Substring) mais ça me revoit toujours des résultats qui n'ont aucun sens.

ex:

-entrée : Interdit à deux mecs de se rendre. Emmenez le prisonnier, dit le moine ; ainsi donc, il protège les hommes en les distribuant à chaque porte. Maison était un but plaisant pour les amateurs peu éclairés ; et, ajouta-t-il en joignant les deux mains de force. Fils d'un de leurs amis, de vous parler, car il connaissait assez sa fille pour la souhaiter à son pire ennemi, n'est, du reste ! Répondre avant d'avoir dépassé l'endroit où nous étions alors ; car enfin il y avait quelques heures, qu'il enjamba de nouveau.


délimiteur : le dernier ";" du texte


-sortie :

Interdit à deux mecs de se rendre. Emmenez le prisonnier, dit le moine ; ainsi donc, il protège les hommes en les distribuant à chaque porte. Maison était un but plaisant pour les amateurs peu éclairés ; et, ajouta-t-il en joignant les deux mains de force. Fils d'un de leurs amis, de vous parler, car il connaissait assez sa fille pour la souhaiter à son pire ennemi, n'est, du reste ! Répondre avant d'avoir dépassé l'endroit où nous étions alors

je sais pas si c'est clair ? déjà la bonne fonction a utiliser d'après vous ?

Merci :cheer:

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 6 mois #30008 par Laurent Dardenne
Salut,
une piste :
#Chaine sans retour chariot
$t='Un autre; et encore.Ici ; dernier avant la fin'

 #Mode de recherche de droite à gauche
#https://docs.microsoft.com/fr-fr/dotnet/api/system.text.regularexpressions.regexoptions?view=netcore-3.1#System_Text_RegularExpressions_RegexOptions_RightToLeft
$r=[Regex]::Matches($t, '^(?<Debut>.*);(?<fin>.*?)', 'RightToLeft')

 #Accès au groupe par un nom de capture
($r.groups|? {$_.Name -eq 'Debut'}).value

#Un autre; et encore.Ici
A vérifier

Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: rogerdu59

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 6 mois #30023 par rogerdu59
C'est bon j'ai trouvé, en fait c'est bien faisable avec un replace, mais j’utilisais un .replace au lieu d'un -replace, tout bêtement.

Merci !

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.070 secondes
Propulsé par Kunena