Strings: Remplacer un caractère par un autre dans une chaîne |
Author(s) 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) La fonction VBA6 Replace( ) peut être utilisée avec Access 2002 (voir le fichier d'aide). À l'intérieur d'une requête d'Access 2000,
où Replace ne fonctionne pas, ou à l'intérieur de code VBA pour les versions précédentes, appeler la fonction fstrTran .
Ainsi, pour remplacer le point dans "Dev.Ashish" par un espace
?fstrTran("Dev.Ashish","."," ")
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
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 contiennent un caractère répété:
?fstrTran("Dev.Ashish",".", "*.*")
Dev**********.**********Ashish
?fstrTran("Dev....Ashish","..", ".")
Dev.Ashish
Si un des cas précédents 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.
Function FindAndReplace(ByVal strInString As String, _
strFindString As String, _
strReplaceString As String) As String
Dim intPtr As Integer
If Len(strFindString) > 0 Then
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
|