OVH Cloud OVH Cloud

Remplacement d'une chaine dans une chaine.

2 réponses
Avatar
Makmaze
Bonjour,
je cherche une solution en VB6 pour remplacer une partie d'une chaîne
de caractère par une autre chaîne de caractère. Aucune des chaînes de
caractères n'a une taille fixe, un coup sur l'autre elles peuvent
avoir des tailles complètement différente, et la partie à insérée dans
la première chaîne peux être entre deux bornes de différentes tailles.

J'ai par exemple une chaîne "1234", je veux pouvoir mettre ma chaîne
"5678" entre '1' et '3' et donc obtenir "1567834", le caractère '2' de
ma première chaîne disparais donc. Mais je veux aussi pouvoir par
exemple, mettre ma chaine "999" entre '1' et '4' de ma première
chaine, j'obtient '19994'

Y a t'il une fonction pour faire ça en VB6 ?
Merci.

2 réponses

Avatar
Jean-Marc
"Makmaze" a écrit dans le message de
news:
Bonjour,
je cherche une solution en VB6 pour remplacer une partie d'une chaîne
de caractère par une autre chaîne de caractère. Aucune des chaînes de
caractères n'a une taille fixe, un coup sur l'autre elles peuvent
avoir des tailles complètement différente, et la partie à insérée dans
la première chaîne peux être entre deux bornes de différentes tailles.

J'ai par exemple une chaîne "1234", je veux pouvoir mettre ma chaîne
"5678" entre '1' et '3' et donc obtenir "1567834", le caractère '2' de
ma première chaîne disparais donc. Mais je veux aussi pouvoir par
exemple, mettre ma chaine "999" entre '1' et '4' de ma première
chaine, j'obtient '19994'

Y a t'il une fonction pour faire ça en VB6 ?



Hello,
une façon de faire:

Public Function ReplaceInString(ByVal s As String, ByVal pa As String, ByVal
pb As String, ByRef result As Boolean) As String
Dim pos As Integer
Dim newStr As String

pos = InStr(s, pa) ' cherche le pattern pa dans s
If pos <> 0 Then ' si trouve
If pos = 1 Then ' cas particulier du pattern en debut de chaine
If s = pa Then ' cas particulier : remplace tout
newStr = pb
Else
newStr = pb & Mid$(s, Len(pa) + 1) ' sinon, met le nouveau
pattern et ajoute la fin de la chaine
End If
Else ' cas le plus general
newStr = Mid$(s, 1, pos - 1) & pb & Mid$(s, pos + Len(pa))
End If
result = True ' resultat ok
Else ' sinon on retourne la chaine sans changement
newStr = s ' retourne la chaine non modifiee
result = False ' resultat pas ok
End If
ReplaceInString = newStr
End Function

JM

Merci.


Avatar
Zoury
Salut! :O)

La fonction Replace() effectue ce travail :
'***
Option Explicit

Private Sub Form_Load()

Dim s As String

s = "1234"
s = Replace(s, "2", "5678")
Debug.Print s ' 1567834

s = "1234"
s = Replace(s, "23", "999")
Debug.Print s ' 19994

End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"Makmaze" wrote in message
news:
Bonjour,
je cherche une solution en VB6 pour remplacer une partie d'une chaîne
de caractère par une autre chaîne de caractère. Aucune des chaînes de
caractères n'a une taille fixe, un coup sur l'autre elles peuvent
avoir des tailles complètement différente, et la partie à insérée dans
la première chaîne peux être entre deux bornes de différentes tailles.

J'ai par exemple une chaîne "1234", je veux pouvoir mettre ma chaîne
"5678" entre '1' et '3' et donc obtenir "1567834", le caractère '2' de
ma première chaîne disparais donc. Mais je veux aussi pouvoir par
exemple, mettre ma chaine "999" entre '1' et '4' de ma première
chaine, j'obtient '19994'

Y a t'il une fonction pour faire ça en VB6 ?
Merci.