Home
Home

---Soumis par Dev Ashish---

Remplacer un caractère par un autre dans une chaîne.

(Q) Comment puis-je remplacer un caractère par un autre, dans un chaîne?

(A) Pour remplacer le point dans  "Dev.Ashish" avec un espace, appeler la fonction  fstrTran  comme suit:

?fstrTran("Dev.Ashish","."," ")

'************ Code Start **********
Function fstrTran(ByVal sInString As String, _
                           sFindString As String, _
                           sReplaceString As String) As String
  Dim iSpot As Integer, iCtr As Integer
  Dim iCount As Integer
  
  iCount = Len(sInString)
  For iCtr = 1 To iCount
    iSpot = InStr(1, sInString, sFindString)
    If iSpot > 0 Then
      sInString = Left(sInString, iSpot - 1) & _
                        sReplaceString & _
                        Mid(sInString, iSpot + Len(sFindString))
    Else
      Exit For
    End If
  Next
  fstrTran = sInString
  
End Function
'************ Code End **********

De Alden Streeter:

    La fonction fStrTran plante dans deux case, à savoir:

1. sFindString est une chaîne vide. e.g. (dans la fenêtre d'exécution immédiate):
    ?fstrTran("Dev.Ashish","","*")
    **********Dev.Ashish

2. sFindString et sReplaceString contient un caractère répété:
    ?fstrTran("Dev.Ashish",".", "*.*")
    Dev**********.**********Ashish

    ?fstrTran("Dev....Ashish","..", ".")
    Dev.Ashish

    Si un des cas précédants est possible, le développeur peut utiliser cette fonction de remplacement. Cette fonction peut également être plus rapide si la chaîne cherchée est longue et si la substitution aura lieu en plusieurs places.

 ''************ Code Start **********
'This code was originally written by Alden Streeter.
'It is not to be altered or distributed,
'except as part of an application.
'You are free to use it in any application,
'provided the copyright notice is left unchanged.

'Ce code fut originalement écrit par Alden Streeter.
'Il ne peut être altéré ni distribué,
'si ce n'est à l'intérieur d'une application.
'Vous êtes libre de l'utiliser dans votre application,
'en autant que cette note soit laissée inchangée
'
'Code Courtesy of
'Alden Streeter
'
Function FindAndReplace(ByVal strInString As String, _
        strFindString As String, _
        strReplaceString As String) As String
Dim intPtr As Integer
    If Len(strFindString) > 0 Then  'catch if try to find empty string
        Do
            intPtr = InStr(strInString, strFindString)
            If intPtr > 0 Then
                FindAndReplace = FindAndReplace & left(strInString, intPtr - 1) & _
                                        strReplaceString
                    strInString = Mid(strInString, intPtr + Len(strFindString))
            End If
        Loop While intPtr > 0
    End If
    FindAndReplace = FindAndReplace & strInString
End Function
'************ Code End **********