[VBS] Isolement d'une chaine de caractères

Résolu
PARKER13 Messages postés 33 Date d'inscription vendredi 18 octobre 2002 Statut Membre Dernière intervention 31 mars 2009 - 26 juil. 2006 à 16:50
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 27 juil. 2006 à 12:32
Une variable contient une valeur de ce style :


    10.56.30.11    -     55-66-88-99-55-2e


(4 espaces, suivi d'une adresse IP, puis plusieurs espaces, un tiret, 4 espaces et enfin une adresse MAC)


La longueur de la chaine de l'adresse IP peut varier entre 10 et 12 caractères


Je souhaiterais ISOLER (RECUPERER UNIQUEMENT) l'adresse IP (sans les 4 espaces AVANT et sans les espaces APRES)


Comment puis-je faire ?

J'ai tenté d'utiliser les fonctions LEFT, MID et RIGHT, mais sans succès.
LEFT et RIGHT necessite de fixer la longueur de la chaine... malheureusement la longueur de mon adresse IP peut varier.

17 réponses

PARKER13 Messages postés 33 Date d'inscription vendredi 18 octobre 2002 Statut Membre Dernière intervention 31 mars 2009
27 juil. 2006 à 10:29
MyString = "    10.56.30.1    -    5eefefef5ef5e5"

adrIP = Trim(Mid(MyString, 1, InStr(MyString, "-") - 1))
3
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
26 juil. 2006 à 16:59
Essaye un truc comme ça :

Mid(machaine, 1, len(machaine)-Instr(1, machaine, " "))

D@runia
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
26 juil. 2006 à 17:05
Salut
Je dirais :

Dim s
s = Trim(machaine)
s = Mid(s, 1, InStr(1, s, " ") - 1)
0
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
26 juil. 2006 à 17:22
Salut!

Moi j'aurai fait un truc du genre (j'ai pas testé)


Public Function GetIPAddress(StrIPAdr As String) As String

   Dim intLen As Integer

   Dim StrIP As String

   Dim StrTemp As String

  

   'Récupère la longueur de la chaîne avant traitement

   intLen = Len(StrIPAdr)

   'Supression des 4 premiers espaces

   StrIP = Mid(StrIPAdr, 4, (intLen - 4))

  

   'Péparation au test

   StrTemp = StrIP

   intLen = 0

   'Compte le nombre de caratères jusqu'au premier espace

   Do

      intLen = intLen + 1

      StrTemp = Mid(StrIP, intLen, 1)

   While (StrTemp <> " ")

  

   'Coupe à la bonne longueur

   StrIP = Mid(StrIP, 1, intLen)

  

   'Retourne l'adresse IP

   GetIPAddress = StrIP

End Function


Salut A+

Sifflet
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
26 juil. 2006 à 17:26
Pardon la syntaxe était fausse et il faut soustraire 1 à la longueur:


   While (StrTemp <> " ")

      intLen = intLen + 1

      StrTemp = Mid(StrIP, intLen, 1)
   Wend

  

   'Coupe à la bonne longueur

   StrIP = Mid(StrIP, 1, intLen - 1)


A+
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 juil. 2006 à 17:58
 Bonsoir,

Sifflet, to script est très joli........en VB6

La bonne réponse, à la question,est de D@runia

jean-marc
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
26 juil. 2006 à 18:32
JMO, tu as testé le code de Darunia ?
Il renvoit la chaine de départ - le 1er espace. Donc ce n'est pas une bonne réponse.
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
26 juil. 2006 à 18:37
Au mieux, s'il n'y avait pas d'espaces en début de chaine (comme indiqué dans la question), ce code ne renverra jamais que l'IP.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 juil. 2006 à 18:51
 Bonsoir,

test1 => jean-marc pour faire simple
test2 => Darunia
Réponse affichée dans les 2 cas = "10.56.30.11" et longueur=11

J'ai même testé (test1) en rajoutant ".19"

machaine = "    10.56.30.11     -     55-66-88-99-55-2e    "


test1 = Trim(Replace(Left(Trim(machaine), Len(Trim(machaine)) - (InStr(1, Trim(machaine), "-") +2)),"-",""))
MsgBox test1 &vbCrLf& Len(test1)
Dim s
s = Trim(machaine)
test2 =  Mid(s, 1, InStr(1, s, " ") - 1)
MsgBox test2 &vbCrLf& Len(test2)

jean-marc
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
26 juil. 2006 à 21:08
Hi Hi ! une manière correcte un peu plus compliquée qui donne le même résultat que ce que J'AI posté (et je ne suis pas Darunia).
Tu as relu l'ensemble du topic ?
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 juil. 2006 à 21:20
 Bonsoir,

Oui, effectivement, c'est bien ton code qui fonctionne !
Le code de Darunia affiche "machaine".
Pour ma part, j'ai fait exprès de mettre cette version de code (qui marche),
car Parker13 s'entête à ne pas valider les bonnes réponses, mais profite
bien de ces dernières !!!
Voir ses 4-5 questions posées.
Il n'y a pas beaucoup de gens qui scriptent en vbs.
On reconnait donc assez facilement les copies de code.

Sorry  et bonne soirée.
jean-marc

machaine = "    10.56.30.11.19   -    55-66-88-99-55-2e"


test1 = Trim(Replace(Left(machaine, Len(machaine) - (InStr(1, machaine, "-") +2)),"-",""))
MsgBox test1 &vbCrLf& Len(test1)

Dim s
s = Trim(machaine)
test2 =  Mid(s, 1, InStr(1, s, " ") - 1)
MsgBox test2 &vbCrLf& Len(test2)
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
26 juil. 2006 à 22:19
No souci Jean-Marc, perso, ça m'arrive aussi de faire une copie de code mais jamais sans l'avoir testé et compris.
En tous cas, merci pour l'info au sujet de Parker13. Je crois que je vais le mettre dans ma liste noire s'il s'entête.
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
27 juil. 2006 à 08:52
J'ai effectivement oublié le truc des 4 espaces avant l'IP ! ;-)

D@runia
0
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
27 juil. 2006 à 08:57
Salut!

Le mien marchait très bien aussi :-) Bon, c'était un peu long, je
l'avoue, mais en même temps, ce qui compte, c'est le fonctionnement,
non? D'ailleurs j'ai appris qqch, je ne connaissais pas la fonction
"Trim" qui faite pour des cas comme celui-ci !


Et pis, juste une autre remarque complètement personnelle, mais moi
j'aime pas trop ces déclarations "Dim s" au milieu de nulle part sans
aucun type...  (enfin Variant, mais voilà quoi...). Après, chaqun
fait comme il veut, mais moi ça me dépasse. Autant ne pas mettre
l'option explicit et ne plus rien déclarer du tout ! Moi, je bosse
surtout en C, c'est pour ça que ça me choque, mais à voir les
différents messages, ça semble tout à fait normal...


Salut! Bonne continuation à tous!

Sifflet
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
27 juil. 2006 à 09:23
Salut,

Si il n'y a pas de type au Dim, c'est que les variables ne sont pas typées en VBS !!!
Il n'y a pas non plus d'option explicit !

D@runia
0
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
27 juil. 2006 à 10:23
ah! Ben alors j'ai pas trop envie de programmer en VBS :-)


Merci pour l'explication ! A+

Sifflet
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
27 juil. 2006 à 12:32
 Bonjour,

La question a été posée dans la section "VBS".

Petit rectificatif pour Darunia.

Option Explicit   ' Forcer la déclaration explicite des variables.
Dim MyVar   ' Déclarer une variable.
MyInt = 10   ' La variable non déclarée génère une erreur.
MyVar = 10   ' La variable déclarée ne génère pas d'erreur

Pour les variables, il existe les fonctions suivantes:
CBool : Renvoie une expression qui a été convertie en un Variant de sous-type Boolean.
CCur :  Renvoie une expression qui a été convertie en un Variant de sous-type Currency.
CDate : Renvoie une expression qui a été convertie en un Variant de sous-type Date.
CDbl :  Renvoie une expression qui a été convertie en un Variant de sous-type Double.
CInt :  Renvoie expression qui a été convertie en un Variant de sous-type Integer.
CLng :  Renvoie une expression qui a été convertie en un Variant de sous-type Long.
CSng :  Renvoie une expression qui a été convertie en un Variant de sous-type Single.
CStr :  Renvoie une expression qui a été convertie en un Variant de sous-type String.
 
jean-marc

 
0
Rejoignez-nous