Convertir lettres en lettres et mots entiers en mots entiers

cs_elmekki Messages postés 114 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 18 août 2007 - 9 juin 2005 à 19:09
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 11 juin 2005 à 18:32
Bonsoir
je cherche un code qui permet de convertir les lettres en lettres selon la coresspondance suivante ('abcdefghijklmn...') par ('idmpxyzpqwnao....')


mais pour quelques mots entiers predefini dans le code, ne suivent pa cette correspondance

les mots entiers dans mon programme sont separés par des "," et des "." et des "/"


par ex:


si je tape dans textbox1: "alin.mange"


il va se transformer en textbox2 par : "inpo.suite"

"alin" suit la coresspondance des lettres
"mange" est predefini, ne suit pa la coresspondance des lettres.

13 réponses

Lucyberad Messages postés 414 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 26 juillet 2007 3
9 juin 2005 à 22:13
Salut !

bon j'ai pour toi la solution: si j'ai bien compris, tu veut remplacer une lettre par une autre:

pas de probleme:

'on va commencer par la le split du texte (separation)

dim text as new string = textbox1.text

dim text1 as new string

dim text2 as new string

text = split(text, ".", , vbtextcompare)

'dans l'ordre: variable a splitter, separateur, inutile, mode de comparation

text1 = text(0) '1ere partie

text2 = text(1) '2nd partie

'on as fini la separation et on commence le traitement

text = textbox1.text

text = text.replace("a", "i") 'la 1ere valeur est remplacée par la seconde

text = text.replace("b", "d")

text = text.replace("c", "m")

'etc...etc....

text2 = "suite"
textbox2.text = text1 & text2 'et chazam on as la nouvelle valeure modifiée



si 1 truc vas pas dit-le (j'aime pas car apres je me goure aussi ^^)



en esperant t'avoir été utile:

@+

L U C Y I3 E R @ D
0
cs_elmekki Messages postés 114 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 18 août 2007
9 juin 2005 à 22:37
Bonsoir,


j'ai rencontrer des erreurs de compilation :


Erreur au niveau de String mais lorsque j'enleve le New le code marche
apres il me donne un erreur en text(0),
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
10 juin 2005 à 01:23
Dim Tabl1() As String

Dim Tabl2() As String

Dim s1 As String

Dim s2 As String

Dim bb As Boolean



Private Sub Form_Load()

s1 = "abcdefghijklmnopqrstuvwxyz"

s2 = "jbcnefghrlkamdopqistuvwxyz"

ReDim Tabl1(3), Tabl2(3)

Tabl1(0) "ja": Tabl2(0) "ny"

Tabl1(1) "ka": Tabl2(1) "po"

Tabl1(2) "mi": Tabl2(2) "wp"

Tabl1(3) "mange": Tabl2(3) "suite"

End Sub



Private Sub Text1_Change()

Dim i As Integer

Dim j As Integer

Dim k As Integer

Dim Lg As Integer

Dim c As String

Dim ch As String

Dim s As String

Dim T() As Integer



If bb Then Exit Sub

bb = True



ch = Text1.Text

Lg = Len(ch)

ReDim T(Lg)



For j = 1 To Lg

c = Mid$(ch, j, 1)

If c "." Or c "," Or c = "/" Then k = k Xor 1

If k 0 Then i InStr(s1, c) Else i = 0

If i > 0 Then s s & Mid$(s2, i, 1) Else s s & c

T(j) = k

Next



For j = 0 To UBound(Tabl1)

i = 2

While i > 1

i = InStr(i, s, Tabl1(j))

If i > 1 Then

k = i + Len(Tabl1(j))

If T(i - 1) = 1 Then

If k <= Lg Then


If T(k) 0 Then Mid$(s, i) Tabl2(j)

End If

End If

i = k + 1

End If

DoEvents

Wend

Next



i = Text2.SelStart

Text2.Text = s

Text2.SelStart = i

bb = False



End Sub



Private Sub Text2_Change()

Dim i As Integer

Dim j As Integer

Dim k As Integer

Dim Lg As Integer

Dim c As String

Dim ch As String

Dim s As String

Dim T() As Integer



If bb Then Exit Sub

bb = True



ch = Text2.Text

Lg = Len(ch)

ReDim T(Lg)



For j = 1 To Lg

c = Mid$(ch, j, 1)

If c "." Or c "," Or c = "/" Then k = k Xor 1

If k 0 Then i InStr(s2, c) Else i = 0

If i > 0 Then s s & Mid$(s1, i, 1) Else s s & c

T(j) = k

Next



For j = 0 To UBound(Tabl2)

i = 2

While i > 1

i = InStr(i, s, Tabl2(j))

If i > 1 Then

k = i + Len(Tabl2(j))

If T(i - 1) = 1 Then

If k <= Lg Then


If T(k) 0 Then Mid$(s, i) Tabl1(j)

End If

End If

i = k + 1

End If

DoEvents

Wend

Next



i = Text1.SelStart

Text1.Text = s

Text1.SelStart = i

bb = False

End Sub




Daniel
0
Lucyberad Messages postés 414 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 26 juillet 2007 3
10 juin 2005 à 08:30
salut !

merci de m'avoir prevenu que j'avais fais une connerie (je la ferai
plus promis) , en effet il s'avere que ca marche mieux sans le new.



gobillot > ton code l'air plus compliqué que le mien... (en fait j'ai trop du mal a m'y reperer lol)

ce que je lui ai roposé est un solution de debutant, a lui de voir si
il veut la methode "c'est beau" ou la "barbare" qui marche aussi...

remarque: tu utilise plus de 8 variable ! une peu dur de s'y reperer apres...

MAIS comme dirais le dicton: du moment que ca marche



@+

L U C Y I3 E R @ D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
10 juin 2005 à 10:54
LUCY13 >>>

Le code à l'air compliqué c'est que en fait il l'est !

faut suivre les messages précédents et tu verras qu'à chaque fois il
demande de rajouter une fonction ce qui recomplique toute la logique du
code.

ici il y a pas toutes les explications, je comprends que tu sois perdu et en plus tu dois être en Net et pas lui.



ELMEKKI >>>

je récapitule, je sais pas non plus si j'ai bien tout compris ...



soit dans TextBox1 à l'origine: alin /ja/ xyz /ka/ .mange. jaka/mi/

il y a des lettres qui sont considérées comme seules (en bleu) et les autres (en rouge) sont considérées comme des mots ...

pas facile de déterminer que /xyz/ n'est pas un mot mais des lettres seules.

je ne peux pas savoir que /ja est un mot tant que la barre de fin n'a
pas été tapée en plus je n'ai pas fait de distinction entre les trois
séparateurs (. , /) donc si on a /ja, ou .ja/ ce sera la
même chose



La première boucle ne s'occupe que des lettres et doit
déterminer si on est pas dans un mot, c'est le but de k, il passe à 1
au premier séparateur rencontré, à l'intérieur du mot il reste à 1 et
au deuxième séparateur il passe à 0. Une fois que k = 0 on sait que
c'est des lettres donc on peut traiter, si k = 1 on traite pas. ce k
est mis en table et va servir pour la deuxième boucle.



Le parcours de la deuxième boucle est différent, on recherche si
dans la chaîne il y a correspondance avec les mots de la table, s'il y
a pas correspondance on passe au mot suivant. i commence à 2 à cause de
la présence du séparateur devant le mot.

s'il y a correspondance, il faut savoir si on est dans un mot k =1 pour
tout le mot et le caractère précédent, k=0 pour le séparateur de fin,
et ne pas dépasser la longueur Lg pendant le test. il peut y avoir
aussi d'autres occurences du même mot donc on fait évoluer le pointeur
de la Longueur de la chaîne et on continue la recherche tant que i
n'est pas à 0.



le résultat dans textBox2 donnera: jard /ny/ xyz /po/ .suite. ljkj/wp/





Daniel
0
cs_elmekki Messages postés 114 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 18 août 2007
10 juin 2005 à 15:03
Bonjour,
Sur Daniel
c presque ce que je cherche, il ya juste deux problemes:

-le mot entier n'est pas obligatoirement separé dans les deux cotés pour qu'il se transforme, mais par ex: soit /mange soit /mange/ soit mange/ soit mange/mange si une des 4 est verifié il transforme en : soit /suite soit /suite/ soit suite/ soit suite/suite.

-l'autre chose est lorsque je tape dans textbox1 par exemple: /imange/ il se transforme en /isuite/ moi je veu pa ca (<STRIKE>/imange/ --->/isuite>)</STRIKE> mais /imange/ doi se transformer en /rmjdge/ cad imange se transforme lettre par lettre en rmjdge
0
cs_elmekki Messages postés 114 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 18 août 2007
10 juin 2005 à 15:09
j'ai oublier d'ajouter ces deux cas pour le premier prb :
mange/mange/mange ou mange/mange/mange/ doit se transformer respectivement en suite/suite/suite ou suite/suite/suite/
0
cs_elmekki Messages postés 114 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 18 août 2007
10 juin 2005 à 16:18
aussi une autre chose :
si je tape dans textbox1 alin/mange doi se transformer en jard/suite

Voici l'algorithme:

dans textbox1: si il rencontre un "/" " ," ou" ." au debut, à la fin ou les deux(au debut et à la fin) dans un mot, si ce mot a son correspondance au code, il va le converti selon la correspondance des mots, si non il va le convertir selon la correspondance des lettres
0
Lucyberad Messages postés 414 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 26 juillet 2007 3
10 juin 2005 à 19:08
puisque le code compliqué t'interesse, prend le mien est vrai qu'il est en .net...

j'essairai a l'ocasion de voir le code compliqué mais j'ai le bac donc j'ai pas trop le temps ^^



su ce je vous laisse
@+

L U C Y I3 E R @ D
0
cs_elmekki Messages postés 114 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 18 août 2007
10 juin 2005 à 20:32
Sur lucyberad


Votre code ne fais pa ce que je cherche, et aussi il ya des erreurs que je n'arrive pa à les corriger.
0
cs_elmekki Messages postés 114 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 18 août 2007
11 juin 2005 à 16:32
Bonjour,
Daniel j'attend ton aide
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 juin 2005 à 17:53
pour l'instant j'ai pas encore trouvé la solution

il faudrait commencer par les mots et non pas par les lettres.

si "/" ou "," ou "." regarder si le mot suivant est un mot connu,
sinon on passe aux lettres et tout ça dans la même boucle.

je te conseille de mettre un nouveau poste !

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 juin 2005 à 18:32
met un nouveau post

parce que là c'est déjà la 5éme page et c'est pas facile à suivre

j'ai peut être une solution ...

Daniel
0
Rejoignez-nous