Page 1 sur 1
deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : jeu. 07 déc. 2023 23:57
par Gavriel
Bonjour
J'ai une phrase:
Le ballon de duck ,donald
Je voudrait la transformer en déplacent le nom de famille à la fin de la phrase Sachant qu'il se trouve en premier avant la virgule.
Le balon de ,donald duck
Je ñ' ai aucune idée par quoi commencer.
Merci de votre aide.
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : ven. 08 déc. 2023 03:34
par Nine
Recommence. Moins de fautes d'orthographes. Un effort pour écrire avec des lettres majuscules et des accents aux bons endroits.
Mais le plus important, un script de base pour nous permettre de corriger là où tu fais erreur.
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : sam. 09 déc. 2023 12:40
par jl56
Bonjour,
ci-dessous un exemple simple de traitement de chaine
#include <Array.au3>$phrase = "Le ballon de duck ,donald "$decoupe_phrase_avec_virgule = StringSplit($phrase, ","); ça creer un tableau avec chaque morceau , le nombre de morceau est inscrit sur la case 0;~ Donc si l'on veux retrouver le nom à la fin dans cette exemple c'est le dernier donc ce qui se trouve à la case 0;~ pour votre information commande pour afficher le tableauIf IsArray($decoupe_phrase_avec_virgule) Then _ArrayDisplay($decoupe_phrase_avec_virgule) ; on voie bien le nombre inscrit a la rangée 0 (Row 0)$prenom = $decoupe_phrase_avec_virgule[$decoupe_phrase_avec_virgule[0]]MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '$prenom' & @CRLF & @CRLF & 'Return:' & @CRLF & $prenom) ;### Debug MSGBOX;~ on decoupe la 1er partie de la phrase avec des espaces en supprimant au préalable les espaces a la fin $decoupe_debut_phrase_avec_espace = StringSplit(StringStripWS($decoupe_phrase_avec_virgule[1], 2), " ");~ la aussi ce que vous désirez est le dernier morceau $nom = $decoupe_debut_phrase_avec_espace[$decoupe_debut_phrase_avec_espace[0]] MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '$nom' & @CRLF & @CRLF & 'Return:' & @CRLF & $nom) ;### Debug MSGBOXEndIf; on supprime le nom du début de phrase$debut_phrase=StringReplace($decoupe_phrase_avec_virgule[1],$nom,"")MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '$debut_phrase' & @CRLF & @CRLF & 'Return:' & @CRLF & $debut_phrase) ;### Debug MSGBOX; puis on reconstitue la phrase finale$phrase_finale=$debut_phrase&$prenom&" ,"&$nomMsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '$phrase_finale' & @CRLF & @CRLF & 'Return:' & @CRLF & $phrase_finale) ;### Debug MSGBOX
ça répond a votre exemple
j'ai laissé les MSGBOX de débug pour que vous voyez le résultat à chaque étape du script
Par contre je n'ai pas traité le cas ou il y a plusieurs virgule dans la phrase mais avec une boucle vous devriez vous en sortir
je n'ai pas traité non plus le cas de nom composé comme "Yann Le breton" ou "Antoine de La Boulaye"
la je ne voie comment faire simplement
Bon Script
Cordialement,
JL56
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : sam. 09 déc. 2023 18:10
par Gavriel
Merci, tu m'as beaucoup aidé maintenant, je vais essayer de réfléchir comment passer la virgule avant Donald Duck
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : sam. 09 déc. 2023 18:28
par mikell
En principe ce genre de truc se fait aux expressions régulières
avec bien entendu toutes les restrictions éventuelles mentionnées dans le message précédent
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : sam. 09 déc. 2023 18:48
par Gavriel
$phrase_finale=$debut_phrase &" ," &$prenom &$nom
Merci infiniment
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : sam. 09 déc. 2023 18:53
par Gavriel
mikell a écrit : ↑sam. 09 déc. 2023 18:28
En principe ce genre de truc se fait aux expressions régulières
avec bien entendu toutes les restrictions éventuelles mentionnées dans le message précédent
merci
pourait tu m'expliquer (.+?)(\w+\h),(\w+)', "$1$3 $2"
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : sam. 09 déc. 2023 22:16
par mikell
Je manque de temps pour ça
Les explications sont dans le fichier d'aide,
ici et
ici
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : sam. 09 déc. 2023 23:37
par Gavriel
merci beaucoup
Je pense avoir plus ou moins compris.
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : dim. 10 déc. 2023 10:04
par jl56
Bonjour à tous,
@mikell
Je suis toujours impressionné par la magie des expressions régulières que je ne maitrise pas malheureusement.
Merci pour ce nouvel exemple
Cordialement,
JL56
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : lun. 11 déc. 2023 10:02
par rgx
Bonjour jl56,
jl56 a écrit : ↑dim. 10 déc. 2023 10:04
[...] des expressions régulières que je ne maitrise pas malheureusement.
Mais si, mais si
Quand tu tapes par exemple "
dir *.* " dans une console; tu créé une expression régulière

(oui, *.* c'est un masque texte donc une expression régulière)
Différente de la forme la plus courante classique (PCRE), mais c'est une des formes d'expression régulière et ça existe depuis 40 ans.
Magie: on fait des
regex comme M. Jourdain faisait de prose sans le savoir
L'expression est facile à comprendre
Code : Tout sélectionner
( = Début capture dans $1
.+ = tous les caractères
? = Jusqu'à ce que la suite corresponde
) = fin de capture dans $1
( = début capture dans $2
\w+ = des "mots" (lettres et quelques caractères ex: _)
\h = un espace horizontal (espace ou tab)
) = fin de capture dans $2
, = une virgule
( = début capture $3
\w+ = des mots
) = fin de capture $3
"$1$3 $2"
Puis on assemble dans le nouvel ordre
Le premier, le troisième, un espace et le deuxième.
Joli ?

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
Posté : lun. 11 déc. 2023 21:06
par jl56
Bonjour,
Merci RGX pour ces explications
Effectivement le dir *.* je le pratique depuis presque 40 ans comme quoi
je tente d'intégrer ça à l'occase
Cordialement,
JL56