Supprimer les espaces, sauf ceux entre guillemets.

Contenu du snippet

Ce code supprime tout les espaces d'une chaine, saufe ceux entre deux '.
Par exemple :
>>Ma phrase à tester 'on ne supprime plus les espaces' et on les resupprime<<
donne :
>>Maphraseàtester'on ne supprime plus les espaces'etonlesresupprime<<

Pratique pour qui veut écrire un compilateur ou un interpréteur. C'est ma première source, donc c'est assez basique, je sais !
Note : ce code n'utilise pas l'instruction replace, en hommage au utilisateur de vb5 !

Source / Exemple :


'// On apelle la fonction avec :
'// ChaineFinale = DeleteSpace(ChaineDeDepart)

Function DeleteSpace(MaChaine As String) As String

Dim NextSpace
Dim BeginAt
Dim nbrG
Dim NextG
Dim LastG
Dim TestPair
Dim TestPair2

BeginAt = 1
LastG = 1

'// Boucle :
begin:
nbrG = 0
LastG = 1

 '// On recherche l'espace :
     NextSpace = InStr(BeginAt, MaChaine, " ")
     If NextSpace = 0 Then Goto ChaineModifie
     BeginAt = NextSpace + 1

 '// On recherche le nombre total de ' avant l'espace :

 '// Si le nombre est impair (sauf 0), on ne supprime pas l'espace, sinon on le
 '//supprime :

nextgFind:

      NextG = InStr(LastG, MaChaine, "'")
          If NextG = 0 Then
               GoTo PhaseSuivante
          Else
               LastG = NextG
               nbrG = nbrG + 1
               GoTo nextGFind
          End if

PhaseSuivante:

  '// On suprime l'espace si le nombre est pair ou = à 0 :
       If nbrG = 0 Then Goto DeletActual
       TestPair = nbrG / 2
       TestPair2 = Int(TestPair)
       If TestPair = TestPair2 Then
DeletActual:
               MaChaine = Left(MaChaine, Nextpace - 1) & Right(MaChaine, Len(MaChaine) - NextSpace)
       End If
'// On Recommence :
Goto begin

'// Une fois la fonction terminée :
ChaineModifie:
DeleteSpace = MaChaine

End Function

Conclusion :


--- Oulàla ! il y avait une errure sur cette source ! La voici corrigée ! ---
Je ne crois pas qu'il n'y ai de bugs sur cette source (à moins d'un problème dans le recopiage). Néamoins, vous pouvez m'envoyez vos commentaires à : scalpweb@hotmail.com.
Merci. @+ et bonne prog !

A voir également

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.