deplacer mot se trouvent anant la vigule a la fin de la phrase

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Gavriel
Niveau 3
Niveau 3
Messages : 32
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

deplacer mot se trouvent anant la vigule a la fin de la phrase

#1

Message 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.
Modifié en dernier par Gavriel le ven. 08 déc. 2023 06:48, modifié 3 fois.
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 104
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#2

Message 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.
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#3

Message 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 tableau
If 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 MSGBOX
EndIf

; 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&" ,"&$nom
MsgBox(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
Gavriel
Niveau 3
Niveau 3
Messages : 32
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#4

Message par Gavriel »

Merci, tu m'as beaucoup aidé maintenant, je vais essayer de réfléchir comment passer la virgule avant Donald Duck
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase  

#5

Message par mikell »

En principe ce genre de truc se fait aux expressions régulières
$s = "Le ballon de duck ,donald"

Msgbox(0,"", StringRegExpReplace($s, '(.+?)(\w+\h),(\w+)', "$1$3 $2") )
avec bien entendu toutes les restrictions éventuelles mentionnées dans le message précédent
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Gavriel
Niveau 3
Niveau 3
Messages : 32
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#6

Message par Gavriel »

$phrase_finale=$debut_phrase &" ," &$prenom &$nom
Merci infiniment
Gavriel
Niveau 3
Niveau 3
Messages : 32
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#7

Message 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
$s = "Le ballon de duck ,donald"

Msgbox(0,"", StringRegExpReplace($s, '(.+?)(\w+\h),(\w+)', "$1$3 $2") )
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"
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#8

Message par mikell »

Je manque de temps pour ça
Les explications sont dans le fichier d'aide, ici et ici
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Gavriel
Niveau 3
Niveau 3
Messages : 32
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#9

Message par Gavriel »

merci beaucoup
Je pense avoir plus ou moins compris.
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#10

Message 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
rgx
Niveau 4
Niveau 4
Messages : 61
Enregistré le : sam. 16 nov. 2019 17:53
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#11

Message 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 :wink:
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 :o

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 ? :wink:
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: deplacer mot se trouvent anant la vigule a la fin de la phrase

#12

Message 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
Répondre