Suppression de caractères dans un string

Soyez le premier à donner votre avis sur cette source.

Snippet vu 31 721 fois - Téléchargée 27 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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
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...
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020

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 !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
Merci de poser ta question sur le Forum...
Messages postés
7
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
23 mars 2009

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
Messages postés
13
Date d'inscription
mercredi 22 février 2006
Statut
Membre
Dernière intervention
19 mars 2008

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.