|
Droit de diffusion et
d'utilisation:
Tous les documents ou partie de document ainsi que le code
sont libres d'accès, mais ne peuvent pas être diffusés
sur d'autres sites HTTP, FTP ou autres, sans mon accord.
L'ensemble de mon code mis à votre diposition est libre d'utilisation
tant qu'il ne sert pas à la réalisation d'applications
payantes. Je demande juste aux personnes incluant mon code dans
leurs applications d'y laisser le commentaire mis en entête.
Avant Propos :
L'ensemble du code et explications que vous trouverez
dans ce document est basé sur Visual Basic 6.
Dans n'importe quel langage le type qui revient
le plus souvent, ou plutot qui est le plus manipulé est
les Chaînes de caractères.
Beaucoup d'opérations sont réalisées sur
ces chaînes comme la concaténation, le découpage,
le remplacement de caractères, etc.
Ce tutorial est là pour faire un rappel
de ce qui est faisable avec les String
ainsi que les limites de ce type. Il est basé sur les
différentes questions qui ont été posées sur le
forum de developpez.com.
Sommaire :
1. Introduction:
La première chose à savoir est qu'il existe 2 types de chaines de caractères en VB. Les chaines
de longueur fixe et les chaines de longueur variable.
Ces deux types de chaînes ont une limite de capacités différentes :
* Les chaînes de longueur fixe peuvent aller jusqu'à 2^16 soit 64Ko
* Les chaînes de longueur variable sont limitées à 2^31 soit 2Go
2. Concaténation de chaînes:
Il existe deux méthodes pour concaténer les chaînes de caractères. Vous pouvez soit utiliser
l'opérateur + soit l'opérateur &. Quelle est la différence entre ces deux opérateurs ?
La différence se trouve quand vous souhaitez concaténer plusieurs types différents dans une
chaîne de caractères. Pour mieux comprendre voici un exemple.
Si vous souhaitez utiliser le + plutot que le
& faites très attention à ce que vous souhaitez
faire. De plus le & est plus rapide que le + pour la
concaténation.
Le cas présenté ci dessus est le
plus simple. Vous pouvez concaténer le contenu de plusieurs
variables.
Seulement il arrive, par exemple lors de la création
de requête SQL, que votre ligne soit trop grande pour
passer à l'écran,ce qui rend plus difficile la
lecture. Vous pouvez donc écrire votre requête
sur plusieurs ligne grâce au caractère _.
Cette technique a une limite car vous ne pouvez
enchaîner plus de 25 lignes de cette façon.
Il existe une deuxième solution qui est aussi souvent
utilisée :
3. Suppression des blancs (espaces) :
En VB, il existe deux fonctions permettant de
supprimer les blancs en début et fin de chaîne.
Ces deux fonctions sont LTrim et RTrim.
LTrim permet de supprimer les espaces en début de chaîne. Par exemple :
Vous pouvez remarquer que l'espace après
les points d'exclamation est toujours présent. Pour supprimer
cet espace vous pouvez utiliser RTrim.
Pour enlever le espaces en début et fin
de chaîne vous utiliseriez LTrim(RTrim(strMaChaine)).
Ce n'est pas faux. Mais une autre fonction Trim fait exactement
la même chose.
Enlever les espaces en trop en début et
fin de chaîne c'est pratique mais comment enlever ceux
contenu dans la chaîne. Rien de plus simple il suffit
de remplacer tous les espaces par rien. Pour cela il faut utiliser
la méthode Replace que nous verrons plus tard.
4. Rechercher une chaîne
dans une chaîne :
La rechercher d'une chaîne dans un autre
est réalisée par la fonction InStr.
Cette fonction permet à la fois de vérifier
si la chaîne recherchée est bien présente,
et si oui, alors elle retourne la position de la première
itération de la chaîne recherchée.
La fonction InStr s'utilise de la façon
suivante: InStr([PositionDeDépart],Chaine1,Chaine2,[TypeDeComparaison])
PositionDeDépart : Entier indiquant à
partir de quel caractère la recherche doit être
réalisée (Facultatif). Par défaut c'est 1.
Chaine1 : Chaine recherchée
Chaine2 : Chaine sur laquelle s'effectue la recherche
TypeDeComparaison : Indique le type de comparaison
à faire (Facultatif).
| Nom de la constante |
Valeur |
Description |
| vbUseCompareOption |
-1 |
Effectue la comparaison en fonction de l'état de
Option Compare. |
| vbBinaryCompare |
0 |
Effectue une comparaison binaire |
| vbTextCompare |
1 |
Effectue une comparaison sur les caractères |
| vbDatabaseCompare |
2 |
Microsoft Access uniquement. Effectue la comparaison
sur les informations de la base de donénes |
Voici un exemple afin de mieux comprendre son
fonctionnement :
5. Remplacer une chaîne par une autre :
Cette fonction est souvent utilisée dans le cas de création
de requêtes. Par exemple pour remplacer les simples côtes
par des doubles côtes, des virugules par des points, des
blancs par rien, etc.
La fonction permettant de réaliser ce travail est la
fonction Replace. Son utilisation est on ne
peut plus simple.
nouvelleChaine = Replace(actuelleChaine,ChaineARemplacer,ChaineAMettreALaPlace)
L'exemple suivant va remplacer les virgules par des points
:
6. Découper une chaîne de caractères :
Il arrive que vous deviez traiter une ligne d'un fichier ou
autre source de données, en la découpant en fonction d'un séparateur. Une
fonction VB vous permet de faire cela : Split. Cette fonction s'utilise de
la manière suivante : monTab = Split(maChaine,monSéparateur).
Comme vous pouvez le voir, la fonction Split retroune un tableau
(de base 0) qui contient dans chaque case les différents champs de
votre châine.
Un petit exemple pour eclaicir tout ça :
Comme résultat vous obtiendrez un tableau à 3 cases (de 0 à
2) avec monTab(0) = "Champ1", monTab(1)="Champ2", monTab(2)="Champ3". Le séparateur
peut être aussi long que vous le souhaitez.
ATTENTION pour ceux qui auraient déjà utilisé strtok en C : la chaîne indiquant
le séparateur est elle même le séparateur. Si vous faîtes Split("Bonjour.
Salut; Ca va,",".;,") vous n'obtiendrez pas "Bonjour", " Salut", "Ca va" car
le séparateur est la chaîne ".;,".
Split retournant un tableau est lui même un tableau. Donc pour
récupérer le premier élément vous pouvez écrire Split(maChaine,monSep)(0),
pour récupérer le n-ième élément vous faîtes Split(maChaine,monSep)(n-1),
et pour récupérer le dernier élément vous faites Split(maChaine,monSep)(UBound(Split(maChaine,monSep)))
7. Quelques trucs à savoir :
La première chose à laquelle il faut faire attention
c'est la taille maximale de la chaîne comme je l'ai indiqué
en introduction.
La deuxième est comment insérer des doubles côtes
dans une chaîne de caractères. Beaucoup de personnes
bloquent sur ce problème. Donc maintenant plus d'excuses
: Pour cela vous devez doubler les doubles côtes. Voici
un petit exemple :
Remarque :
Il est tout à fait possible qu'il y ait des erreurs dans
le document. Si vous en trouvez, ou bien souhaitez un
peu plus d'explication sur certains points, veuillez m'envoyer
un message privé via le forum afin de mettre à jour l'ensemble
de ce document. D'avance merci.
Documents réalisés par
Sébastien Curutchet
|