IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ VBScriptConsultez toutes les FAQ

Nombre d'auteurs : 16, nombre de questions : 108, dernière mise à jour : 2 mars 2019  Ajouter une question

 


Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et des membres du forum VB.

Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributions VBScript.

Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacter par MP ThierryAIM ou bbil.

L'équipe de rédaction de Developpez.com vous remercie pour votre participation passée et à venir.

SommaireVB ScriptManipulation des chaînes de caractères (10)
précédent sommaire suivant
 

On retrouve les fonctions habituelles d'extraction d'une partie de chaîne de Visual basic :

  • Left(chaîne, NombreDeCaracteres) : Pour extraire la partie gauche de la chaîne donnée en paramètre
  • Right(chaîne, NombreDeCaracteres) : Pour extraire la partie droite de la chaîne donnée en paramètre
  • Mid(chaîne, posdepart, NombreDeCaracteres) : Pour extraire le nombre de caractères spécifiés, à partir d'un caractère donné (posdepart)


Code vb : Sélectionner tout
1
2
3
4
5
Dim st 
st="Bienvenue sur DVP" 
Wscript.Echo Left(st,9) 
Wscript.Echo Mid(st,11,3) 
Wscript.Echo Right(st,3)
Bienvenue
sur
DVP


Nota: Pour la fonction Mid si le troisième paramètre (NombreDeCaracteres) est omis ou supérieur au nombre de caractères disponibles dans la chaîne après la position de départ, le caractère en position de départ et tous les caractères qui lui succèdent sont retournés.

Ce qui donne :

Code vb : Sélectionner tout
1
2
3
4
Dim st 
st = "Bienvenue sur DVP" 
Wscript.Echo Mid(st,11) 
Wscript.Echo Mid(st,11,255)
sur DVP
sur DVP

Mis à jour le 5 mai 2008 SfJ5Rpw8

En utilisant la fonction Len() :

Code vb : Sélectionner tout
1
2
3
Dim st 
st="Bienvenue sur DVP" 
Wscript.Echo Len(st)
17

Mis à jour le 5 mai 2008 SfJ5Rpw8

L'opérateur usuel de concaténation est : &

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Dim st1 
Dim st2 
' 
' Concaténation de la "valeur" de 2 variable 
' 
st1 = "Bienvenue " 
st2 = "sur dvp" 
Wscript.Echo st1 & st2 
' Une chaîne et une variable : 
Wscript.Echo st1 & " a vous"


ce qui donne :

Bienvenue sur dvp
Bienvenue a vous



Il est aussi possible (mais déconseillé) d'utiliser l'opérateur : +
Celui-ci se comporte en opérateur de concaténation lorsque les 2 membres de l'opération sont des chaînes

Code vb : Sélectionner tout
1
2
3
4
  
Wscript.Echo "à voir " + st2 
'Attention dans l'utilisation de l'opérateur + 
Wscript.Echo "1" + "2"
à voir sur dvp
12



et en opérateur d'addition lorsque l'un des opérantes est numérique

Code vb : Sélectionner tout
1
2
Wscript.Echo "3" + 2 
Wscript.Echo 1+2
5
3



Une mauvaise utilisation de l'opérateur +, peut provoquer une erreur de type :
Erreur d'exécution Microsoft VBScript: Type incompatible: '[string: "a"]'
Code vb : Sélectionner tout
Wscript.Echo "a" + 1
la chaîne "a" ne pouvant pas être additionnée à la valeur numérique 1.

Mis à jour le 27 février 2014 SfJ5Rpw8

La fonction Split permet "d'éclater" le contenu d'une chaîne dans un tableau, en fonction d'un caractère séparateur

Code vb : Sélectionner tout
1
2
3
4
5
6
Dim st,i,tb 
st="Antoine,Pierre,Jacques,Alain" 
tb = split(st,",") 
For i = lbound(tb) to ubound(tb) 
  Wscript.echo tb(i) 
next
Antoine
Pierre
Jacques
Alain

Nota: les fonctions Lbound et Ubound permettent de renvoyer les limites basse et haute des index d'un tableau. La fonction Split renvoyant un tableau dont l'index le plus bas est toujours 0, on aurait pu écrire :

Code vb : Sélectionner tout
For i = 0 to ubound(tb)

Mis à jour le 5 mai 2008 SfJ5Rpw8

La fonction Join permet de regrouper tous les éléments d'un tableau de chaînes en une chaîne, tout en précisant un séparateur :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
Dim st,tb(3) 
Tb(0)="Antoine" 
tb(1)="Pierre" 
tb(2)="Jacques" 
tb(3)="Alain" 
  
st = join(tb,",") 
 Wscript.echo st
Antoine,Pierre,Jacques,Alain

Nota: Si le caractère de séparation est omis, un espace est utilisé.

Mis à jour le 5 mai 2008 SfJ5Rpw8

Instr(p,ch1,ch2) recherche la chaîne ch2 dans ch1 à partir de la position p. Si ch2 est trouvée, la valeur renvoyée est la position de son premier caractère dans ch1, sinon la fonction renvoie 0.

Code vb : Sélectionner tout
1
2
pos = InStr(4, "Nous sommes au mois de Juillet.", "Juillet")    'renvoie 24 
pos = InStr(27, "Nous sommes au mois de Juillet.", "Juillet")   'renvoie 0

Mis à jour le 29 juillet 2002

La bibliothèque Microsoft VBScript Regular Expressions permet d'utiliser des expressions régulières dans Visual Basic. Il faut l'ajouter dans les références du projet.

Le principe consiste à créer un objet RegExp, à le paramétrer en modifiant ses propriétés, puis à lancer la recherche en appelant la méthode Execute(). Vous devez passer en paramètre la chaîne de caractères dans laquelle vous souhaitez faire une recherche. La méthode Execute() renvoie les occurrences dans une collection. Si vous avez donné la valeur True à la propriété Global de l'objet RegExp, cette collection contiendra toutes les occurrences, sinon seulement la première.

Voici comment vérifier la validité d'une adresse email. Ce code a été écrit avec la version 5.5 de la librairie.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Public Function EmailValide(ByVal email )  
    Dim regEx , occurrences 
    Set regEx = New RegExp 
    regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$" 
    regEx.IgnoreCase = True 'Ne pas distinguer les minuscules des majuscules 
    regEx.Global = False 'Renvoyer seulement la première occurrence 
    Set occurrences = regEx.Execute(email) 
    EmailValide = (occurrences.Count = 1) 
  
End Function

Mis à jour le 6 septembre 2004

Il faut pour cela utiliser l'objet RegExp qui va permettre de valider une chaîne de caractères en fonction d'un pattern :

Code vb : Sélectionner tout
Set RegularExpressionObject = New RegExp

Ensuite, il faut le paramétrer en fonction de la recherche :

Code vb : Sélectionner tout
1
2
3
4
With RegularExpressionObject 
 .Pattern = Pattern 
 .IgnoreCase = Boolean 
End With

La pattern est l'expression régulière et IgnoreCase permet d'indiquer s'il faut prendre en compte ou non la casse.

Ensuite, une fois l'objet paramétré, il suffit d'utiliser la méthode Test avec la chaîne à tester en paramètre :

Code vb : Sélectionner tout
RegularExpressionObject.Test(aTester)

Cette méthode va nous renvoyer True ou False en fonction du résultat.

Voici par exemple, la méthode pour valider une adresse IP :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
Set RegularExpressionObject = New RegExp 
  
With RegularExpressionObject 
 .Pattern = "^((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)$" 
 .IgnoreCase = False 
End With 
  
MsgBox RegularExpressionObject.Test("172.16.18.21") 
MsgBox RegularExpressionObject.Test("300.22.194.37")


Ce qui nous retourne true pour la première chaîne et False pour la seconde.

III-B. Les expressions régulières

Mis à jour le 5 mai 2008

En utilisant la méthode Eval :

Code vb : Sélectionner tout
1
2
3
4
Dim toto  
  
toto = "SUPER * 10"  
MsgBox Eval(Replace(toto, "SUPER", 500))

Mis à jour le 13 juin 2005 Sadneth shwin

L'astuce consiste à appeler la fonction dans la boite de saisie InputBox en la mettant comme 3e paramètre dans cette fonction :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Option Explicit  
  
InputBox "", "", Test 
Function Test() 
   Const ForReading = 1 
   Dim fso, F 
   Set fso = CreateObject("Scripting.FileSystemObject") 
   Set f = fso.OpenTextFile(Wscript.ScriptName, ForReading, False) 
   Test = f.ReadAll 
End Function

Le retour de la fonction étant sélectionné par défaut, il suffit de le copier puis le coller là où vous voulez.
Bien entendu, le retour de la fonction ne doit pas excéder la longueur permise par la boite de saisie (à savoir 1024 caractères).

Mis à jour le 16 août 2016 l_autodidacte

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.