Suppression de caractères dans un string

0/5 (20 avis)

Snippet vu 32 326 fois - Téléchargée 29 fois

Contenu du snippet

Voici une petite fonction qui permet de supprimer n'importe quel caractère (autant que l'on veut) d'une chaine de caractère.
La chaine à nettoyer se met en premier argument, les caractères à supprimer se placent dans les arguments suivants. On peut mettre autant d'arguments à cette fonction qu'on le désire.
(au minimum un, sinon la fonction n'a pas de but)

Source / Exemple :


'Cette fonction supprime n'importe quel caractère du string strA passé en premier argument
' exemple :
' toto="azè-e(r(tè-y"
' toto=Strip(toto,"(","è","-")
' donne "azerty"
Function Strip(strA As String, ParamArray varZoek())
    Dim intTel As Integer
    Dim strNew As String
    Dim varteken As Variant
    Dim strTekst As String
    
    strTekst = strA
    For Each varteken In varZoek()
        strNew = ""
        For intTel = 1 To Len(strTekst)
            If Mid(strTekst, intTel, 1) <> varteken Then
                strNew = strNew & Mid(strTekst, intTel, 1)
            End If
        Next
       strTekst = strNew

    Next
    Strip = strNew
End Function

A voir également

Ajouter un commentaire Commentaires
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
8 juin 2006 à 11:57
ce genre de question est récurrent, et des sources le traite.

une solution possible :

Private Const ES_UPPERCASE As Long = &H8&
Private Const GWL_STYLE As Long = -16

Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub Form_Load()
SetWindowLong Text1.hwnd, GWL_STYLE, ES_UPPERCASE Or (GetWindowLong(Text1.hwnd, GWL_STYLE))
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStrB("1234567890ABCDEFabcdef" & Chr$(8) & Chr$(24) & Chr$(22) & Chr$(3), Chr$(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub




attention, tu peux ici coller des valeurs interdites...
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
8 juin 2006 à 11:55
Slu

il faut traiter la valeur ascii dans la fonction keypress .... il faut, je crois, mettre ascii = 0 pour les caracteres qui ne sont pas permis !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
8 juin 2006 à 11:53
Merci de poser ta question sur le Forum...
sanyohan13 Messages postés 7 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 23 mars 2009
8 juin 2006 à 11:42
salut
je débute et je voudrais savoir comment faire pour écrire seulement "1234567890ABCDEF" et que les autres caractères ne s'écrivent pas m^me si on appuie dessus...
merci
VBsnail Messages postés 13 Date d'inscription mercredi 22 février 2006 Statut Membre Dernière intervention 19 mars 2008
23 févr. 2006 à 23:47
Bon, à la demande générale, le code avec la fonction Replace:
Function Strip(ByVal strA As String, ByVal ParamArray varZoek() As String)
' Merci Jean Elens
Dim intTel As Integer
Dim strNew As String
Dim varteken As Object
Dim strTekst As String

strTekst = strA
For Each varteken In varZoek
strNew = ""
'For intTel = 1 To Len(strTekst)
' If Mid(strTekst, intTel, 1) <> varteken Then
' strNew = strNew & Mid(strTekst, intTel, 1)
' End If
'Next
strNew = Replace(strTekst, varteken, "")

strTekst = strNew
MessageBox.Show(strNew, "Strip", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Next
Strip = strNew
End Function
Afficher les 20 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.