deplacer mot se trouvent anant la vigule a la fin de la phrase
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
deplacer mot se trouvent anant la vigule a la fin de la phrase
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.
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.
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
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.
Mais le plus important, un script de base pour nous permettre de corriger là où tu fais erreur.
- jl56
- Niveau 7
- Messages : 412
- 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
Bonjour,
ci-dessous un exemple simple de traitement de chaine
ç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
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
$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
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
Merci, tu m'as beaucoup aidé maintenant, je vais essayer de réfléchir comment passer la virgule avant Donald Duck
- mikell
- 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
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
$s = "Le ballon de duck ,donald"
Msgbox(0,"", StringRegExpReplace($s, '(.+?)(\w+\h),(\w+)', "$1$3 $2") )
Msgbox(0,"", StringRegExpReplace($s, '(.+?)(\w+\h),(\w+)', "$1$3 $2") )
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
$phrase_finale=$debut_phrase &" ," &$prenom &$nom
Merci infiniment
Merci infiniment
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
mercimikell 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$s = "Le ballon de duck ,donald"
Msgbox(0,"", StringRegExpReplace($s, '(.+?)(\w+\h),(\w+)', "$1$3 $2") )
pourait tu m'expliquer (.+?)(\w+\h),(\w+)', "$1$3 $2"
- mikell
- 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: deplacer mot se trouvent anant la vigule a la fin de la phrase
merci beaucoup
Je pense avoir plus ou moins compris.
Je pense avoir plus ou moins compris.
- jl56
- Niveau 7
- Messages : 412
- 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
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
@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
Bonjour jl56,
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
"$1$3 $2"
Puis on assemble dans le nouvel ordre
Le premier, le troisième, un espace et le deuxième.
Joli ?
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
Puis on assemble dans le nouvel ordre
Le premier, le troisième, un espace et le deuxième.
Joli ?
- jl56
- Niveau 7
- Messages : 412
- 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
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
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