[..] Transformer un mot en chiffre
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.
[..] Transformer un mot en chiffre
Voila je voudrais faire un petit script pour modifier un mot en chiffre cependant je ne sais pas si est possible de faire décortiquer un mot lettre par lettre, si ?
ex : Bonjour
il va prendre le B le changer en 2 le o en 5 le n en 8 etc...
es ce possible ?
doit t'il lire dans un ini ou .txt ?
merci !
ex : Bonjour
il va prendre le B le changer en 2 le o en 5 le n en 8 etc...
es ce possible ?
doit t'il lire dans un ini ou .txt ?
merci !
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] transformer un mot en chiffre
Voila un petit bout de code
les 10 premières lettres sont remplacé par le nombre avec 0 devant, pour pouvoir refaire l'opération inverse, découpé par 2 chiffrre et retrouvé la bonne lettre.
les 10 premières lettres sont remplacé par le nombre avec 0 devant, pour pouvoir refaire l'opération inverse, découpé par 2 chiffrre et retrouvé la bonne lettre.
Code : Tout sélectionner
#Include <Array.au3>
#Include <Misc.au3>
;; Fonctions ------------------------------------------------
; Conversion d'une chaine en nombre
; chaque carractère sur 2 chiffres
;
; _Text2Number($Text)
;
; _Number2Text($Num)
;
; GaRy delaMer
;------------------------------------------------------------
Global $_sTEXT2NUM = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàâäéèêëö"
Global $_aTEXT2NUM = StringSplit($_sTEXT2NUM, "", 2)
Func _Text2Number($Text, $iCase = 0)
$Text = StringSplit($Text, "")
Local $return = ""
For $i = 1 To $Text[0]
Local $Index = _ArraySearch($_aTEXT2NUM, $Text[$i], 0, 0, $iCase)
$return &= _Iif($Index < 10, "0" & $Index, $Index)
Next
Return $return
EndFunc
Func _Number2Text($Num)
Local $len = StringLen($Num)
Local $return = ""
For $i = 1 To $len Step 2
Local $Index = StringMid($Num, $i, 2)
$return &= $_aTEXT2NUM[Number($Index)]
Next
Return $return
EndFunc;~ _ArrayDisplay($a0)
;; Exemples
Local $s = "Bon jour", $r = _Text2Number($s, 1)
MsgBox(0, "", $s & "=>" & $r)
$s = _Number2Text($r)
MsgBox(0, "", $r & "=>" & $s)
Re: [..] transformer un mot en chiffre
Merci mais j'aurai souhaité pouvoir moi même définir quel chiffre irai avec quel lettre
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] transformer un mot en chiffre
Hé bien adaptez le code.
Ce code crée le tableau des lettres.
Créez un autre tableau de 61 nombres correspondant à vos attributions de nombre aux lettres sur la même base que le code ci-dessus ...
Vous serez par contre obligé d'utiliser un caractère de séparation et d'adapter le StringSplit.
Ensuite, vous n'avez qu'à modifier le code pour remplacer telle lettre par son équivalent numérique. Les indexes étend les même cela ne devrait pas vous poser de problèmes.
Code : Tout sélectionner
Global $_sTEXT2NUM = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàâäéèêëö"
Global $_aTEXT2NUM = StringSplit($_sTEXT2NUM, "", 2)Créez un autre tableau de 61 nombres correspondant à vos attributions de nombre aux lettres sur la même base que le code ci-dessus ...
Vous serez par contre obligé d'utiliser un caractère de séparation et d'adapter le StringSplit.
Ensuite, vous n'avez qu'à modifier le code pour remplacer telle lettre par son équivalent numérique. Les indexes étend les même cela ne devrait pas vous poser de problèmes.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] transformer un mot en chiffre
Bonjour
pour le fun j'ai modifier un peu le code.
Comme le dit Tlem, il suffit de choisir la séquence de lettre qui seront transformé dans la variable $_sTEXT2NUM.
Ensuite la fonction va le coder et remplacer chaque caractère de la chaine $Text, par l'index du tableau $_aTEXT2NUM qui correspond au caractère.
Ce tableau prend pour index 0 le premier caractère de $_sTEXT2NUM.
SI la fonction trouve pas de l'index alors je laisse le caractère.
L'autre fonction fais l'inverse.
Bonjour madame la Marquise=>4929665829367247640050006412476200476500727036227412
4929665829367247640050006412476200476500727036227412=>Bonjour madame la Marquise
Bonjour, madame la Marquise.=>B03nj0304r06 m00d00m01 l00 M00rq0402s0108
B03nj0304r06 m00d00m01 l00 M00rq0402s0108=>Bonjour, madame la Marquise.
pour le fun j'ai modifier un peu le code.
Comme le dit Tlem, il suffit de choisir la séquence de lettre qui seront transformé dans la variable $_sTEXT2NUM.
Ensuite la fonction va le coder et remplacer chaque caractère de la chaine $Text, par l'index du tableau $_aTEXT2NUM qui correspond au caractère.
Ce tableau prend pour index 0 le premier caractère de $_sTEXT2NUM.
SI la fonction trouve pas de l'index alors je laisse le caractère.
L'autre fonction fais l'inverse.
Code : Tout sélectionner
Global $_sTEXT2NUM = "aàâæAÀÂÆcçCÇeéèêëEÉÈÊËiîïiIÎÏoôœOÔŒUuùûüÙÛÜyÿYŸ bBdDfFgGhHjJkKlLmMnNpPqQrRsStTvVwWxXzZ"
Global $_aTEXT2NUM = StringSplit($_sTEXT2NUM, "", 2)
Func _Text2Number($Text, $iCase = 0)
Local $return = ""
$Text = StringSplit($Text, "")
For $i = 1 To $Text[0]
Local $Index = _ArraySearch($_aTEXT2NUM, $Text[$i], 0, 0, $iCase)
If $Index > -1 Then
$return &= _Iif($Index < 10, "0" & $Index, $Index)
Else
$return &= $Text[$i]
EndIf
Next
Return $return
EndFunc
Func _Number2Text($Num)
Local $Start = 1, $Len = StringLen($Num), $return = ""
Do
Local $Pos = StringMid($Num, $Start, 2)
If StringRegExp($Pos, "\d{2}") Then
Local $Index = Number($Pos)
If $Index < UBound($_aTEXT2NUM) Then
$return &= $_aTEXT2NUM[$Index]
Else
$return &= $Pos
EndIf
$Start += 2
Else
$return &= StringMid($Num, $Start, 1)
$Start += 1
EndIf
Until $Start > $len
Return $return
EndFunc
Code : Tout sélectionner
;; Exemples 1
Local $s = "Bonjour madame la Marquise"
$r = _Text2Number($s, 1)
ConsoleWrite($s & "=>" & $r & @LF)
$s = _Number2Text($r)
ConsoleWrite($r & "=>" & $s & @LF & @LF)
4929665829367247640050006412476200476500727036227412=>Bonjour madame la Marquise
Code : Tout sélectionner
;; Exemples 2 remplace les voyelles et la ponctuation
$_sTEXT2NUM = "aeiouy,;."
$_aTEXT2NUM = StringSplit($_sTEXT2NUM, "", 2)
$s = "Bonjour, madame la Marquise."
$r = _Text2Number($s, 1)
ConsoleWrite($s & "=>" & $r & @LF)
$s = _Number2Text($r)
ConsoleWrite($r & "=>" & $s & @LF)
B03nj0304r06 m00d00m01 l00 M00rq0402s0108=>Bonjour, madame la Marquise.
Re: [..] Transformer un mot en chiffre
J'ai compris pas mal chose en les décortiquant mais je pensai plus a un script du genre 1 lettre = 1 Chiffre prédéfini soit meme
ex :
a = 2(1)
b = 2(2)
c = 2(3)
d = 3(1)
ceci correspond au touche d'un mobile 2 = touche 2 / (1) = le nombre d'appuis.
Bonjour = 2(2)6(3)6(2)5(1)6(3)8(2)7(3)
en cas d'espace on mets un - ou /
donc je pensais a un raisonnement du genre "si b est entré convertir en 2(2) si ..."
enfin si cela est plus courant ou non je ne sais pas du tous
sur ce je continu a essayer
merci pour l'aide.
ex :
a = 2(1)
b = 2(2)
c = 2(3)
d = 3(1)
ceci correspond au touche d'un mobile 2 = touche 2 / (1) = le nombre d'appuis.
Bonjour = 2(2)6(3)6(2)5(1)6(3)8(2)7(3)
en cas d'espace on mets un - ou /
donc je pensais a un raisonnement du genre "si b est entré convertir en 2(2) si ..."
enfin si cela est plus courant ou non je ne sais pas du tous
sur ce je continu a essayer
merci pour l'aide.
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Transformer un mot en chiffre
J'ai vraiment parfois l'impression de ne pas être lu par certains ...
Je répète donc encore une fois :
Tableau 1 = Toutes les lettres et caractères à utiliser
Tableau 2 = les nombres correspondants aux lettres et caractères du tableau 1 (dans le même ordre).
Par rapport à votre exemple, a = 2(1), b = 2(2), c = 2(3), d = 3(1)
Pour convertir une chaine, vous n'avez qu'a lire celle-ci caractère par caractère.
Pour chaque caractère, utilisez la fonction _ArraySearch sur le tableau 1.
Cette fonction vous renverra l'index du caractère trouvé.
Utilisez cet index pour construire la nouvelle chaine a partir du tableau 2.
Edit :
En prévision des questions suivantes, voici un code d'exemple selon vos données ci-dessus.
Essayez quand même de trouver par vous même avant de lire.
Je répète donc encore une fois :
Tableau 1 = Toutes les lettres et caractères à utiliser
Tableau 2 = les nombres correspondants aux lettres et caractères du tableau 1 (dans le même ordre).
Par rapport à votre exemple, a = 2(1), b = 2(2), c = 2(3), d = 3(1)
Pour convertir une chaine, vous n'avez qu'a lire celle-ci caractère par caractère.
Pour chaque caractère, utilisez la fonction _ArraySearch sur le tableau 1.
Cette fonction vous renverra l'index du caractère trouvé.
Utilisez cet index pour construire la nouvelle chaine a partir du tableau 2.
Edit :
En prévision des questions suivantes, voici un code d'exemple selon vos données ci-dessus.
Essayez quand même de trouver par vous même avant de lire.
► Afficher le texte
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Transformer un mot en chiffre
Merci Tlem 
j'ai aussi commencé un bout de code pour répondre à la dernière demande
je partais sur un tableau à 2 dimensions
j'ai aussi commencé un bout de code pour répondre à la dernière demande
je partais sur un tableau à 2 dimensions
Code : Tout sélectionner
#Include <Array.au3>
#Include <Misc.au3>
Global $_aTEXT2PHONE[33][3] = [ _
[" ", 1, 1], _ ; La lettre, la touche, le nombre de répétition de la touche
["a", 2, 1], _
["b", 2, 2], _
["c", 2, 3], _
["d", 3, 1], _
["e", 3, 2], _
["f", 3, 3], _
["é", 3, 4], _
["è", 3, 5], _
["ê", 3, 6], _
["g", 4, 1], _
["h", 4, 2], _
["i", 4, 3], _
["j", 5, 1], _
["k", 5, 2], _
["l", 5, 3], _
["m", 6, 1], _
["n", 6, 2], _
["o", 6, 3], _
["p", 7, 1], _
["q", 7, 2], _
["r", 7, 3], _
["s", 7, 4], _
["t", 7, 1], _
["u", 7, 2], _
["v", 7, 3], _
["w", 9, 1], _
["x", 9, 2], _
["y", 9, 3], _
["z", 9, 4], _
["*", "*", 1], _
["+", "*", 2], _
["#", "#", 1]]
_ArrayDisplay($_aTEXT2PHONE)
Func _Text2Phone($Text)
Local $return = ""
$Text = StringSplit($Text, "")
For $i = 1 To $Text[0]
Local $Index = _ArraySearch($_aTEXT2PHONE, $Text[$i], 0, 0, 0, 0, 1, 0)
ConsoleWrite($Text[$i] & "=>" & $Index & @LF)
If $Index > -1 Then
$return &= $_aTEXT2PHONE[$Index][1] & "(" & $_aTEXT2PHONE[$Index][2] & ")"
Else
$return &= $Text[$i]
EndIf
Next
Return $return
EndFunc
;; Exemples 1
Local $s = "Bonjour Mme # + * la Marquise"
Local $r = _Text2Phone($s)
ConsoleWrite($s & "=>" & $r & @LF)Re: [..] Transformer un mot en chiffre
J'ai lu la n'est pas le souci oO'
juste que je ne suis pas calé du tous en autoit je ne fais que des petits script pour m'amuser un peu histoire de m'occuper.
tous les script que j'ai fais jusqu'a présent ne sont que des automatisation basic
j'ai encore beaucoup de mal avec les variantes un peu plus complexe surtout pour ne pas aider je ne parle mais pas du tous anglais
alors j'essai pas mal deja avant de faire le script en francais (enfin redigé) puis de voir se que je peux faire avec autoit...
mais bon je pensai que si j'avais un souci d'ordre de comprehension je pouvais poster une demande
mais si c'est pour ce faire rembarrer pas de souci je post plus 
je sais que cela peu vous agacer parfois mais c'est un peu le principe hein
il faut de tous pour faire un monde des bons et des noobs xD
enfin bon j'essai quand meme de comprendre quand meme hein
merci pour les exemples.
juste que je ne suis pas calé du tous en autoit je ne fais que des petits script pour m'amuser un peu histoire de m'occuper.
tous les script que j'ai fais jusqu'a présent ne sont que des automatisation basic
j'ai encore beaucoup de mal avec les variantes un peu plus complexe surtout pour ne pas aider je ne parle mais pas du tous anglais
alors j'essai pas mal deja avant de faire le script en francais (enfin redigé) puis de voir se que je peux faire avec autoit...
mais bon je pensai que si j'avais un souci d'ordre de comprehension je pouvais poster une demande
je sais que cela peu vous agacer parfois mais c'est un peu le principe hein
il faut de tous pour faire un monde des bons et des noobs xD
enfin bon j'essai quand meme de comprendre quand meme hein
merci pour les exemples.

