Remplacer un caractère par un autre

Signaler
Messages postés
17
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 novembre 2010
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Bonjour à tous,

Je m'arrache les cheveux sur un problème certainement tout simple mais que je ne parviens pas à résoudre. Je pose le décor :
deux TextBox et un bouton.
Je souhaite que le clic sur le bouton entraîne une comparaison entre deux caractères ayant la même position dans les deux TextBox (premier caractère dans l'exemple)et que dans le cas où ils sont différents, celui de la deuxième chaîne prenne la valeur du caractère de la première.
La partie comparaison ne me pose pas de problème. En revanche dès lors qu'il s'agit de remplacer, ça ne passe pas, je me retrouve avec l'erreur suivante : "la propriété 'Chars' est 'ReadOnly' ".
Je vous transmets ci-dessous mon code :

If TextBox1.Text(0) <> TextBox2.Text(0) Then
TextBox2.Text(0) = TextBox1.Text(0)

Else
End If

Je sais que la comparaison fonctionne car si je remplace la partie "remplacement" par une MsgBox m'indiquant si les caractères sont = ou <> j'ai bien la bonne indication qui m'est donnée. Je précise avoir tenté de coder avec "replace" j'ai les mêmes problèmes !
Je vous remercie par avance pour votre aide.

4 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
52
Salut

Attention tu vas devenir chauve
c'est readonly il va falloir que tu codes autrement
 Dim str1() As String
        Dim str2() As String
        ReDim str1(TextBox1.Text.Length - 1)
        For iter = 0 To TextBox1.Text.Length - 1
            str1(iter) = TextBox1.Text.Substring(iter, 1)
        Next
        ReDim str2(TextBox2.Text.Length - 1)
        For iter = 0 To TextBox2.Text.Length - 1
            str2(iter) = TextBox2.Text.Substring(iter, 1)
        Next


tu peux comparer str1 et str2 et remplacer
If str1(0) <> str2(0) Then
str1(2) = str2(2)
End If
Messages postés
17
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
14 novembre 2010

Salut, ShayW et merci pour ton message. Je ne l'ai pas précisé mais je suis débutant et par conséquent, je ne maîtrise pas tout. Pourrais-tu, dans la mesure du possible, me dire en français (je veux dire en expliquant, je ne remets pas en cause tes compétences linguistiques, loin de moi cette idée) et non pas en code ce qui "bloque" dans ce que j'ai fait et notamment à quoi fait référence ce "ReadOnly".
Pour ce qui est de ton code, je ne l'ai pas encore décortiqué (pas eu le temps), mais au delà d'un code qui fonctionne, je souhaite vraiment comprendre ! et passer ce blocage car je vais probablement y être confronté dans le futur !
En tout cas, merci beaucoup dès à présent pour les infos transmises.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
52
Salut
Moi aussi je suis débutant
alors pour expliquer
je vais essayer c'est bien pour moi aussi

j'ai testé avant de dire des conneries
on ne peut pas changer le caractère d'un string
(chaine) c'est readonly seulement pour lecture

par ex
dim str1 as string
dim str2 as string
if str1(0) <> str2(0) then
'c'est correcte parce que je lis seulement
str2(0) = str1(0) 'la non tu essayes de modifier
le caractère 0 de str2
j'espère avoir expliqué
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
52
Je me complique vraiment la vie
voila
on peut faire comme çà
 Dim ch As Char
        If TextBox1.Text(0) <> TextBox2.Text(0) Then
           'gardes le caractère 0 d
            ch = TextBox1.Text(0)
            TextBox2.Text = ch & TextBox2.Text.Substring(1)
        End If


ce que j'ai fait j'ai formé de nouveau le string
du textbox2
le 1er caractère de texbox1.text
ch = TextBox1.Text(0)

TextBox2.Text.Substring(1)
toute la chaine à partir du 2 ème caractère de
textbox2.text

ensuite je fais une concaténation TextBox2.Text = ch & TextBox2.Text.Substring(1)