Split, VB.net et VB6

Résolu
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
- 15 déc. 2006 à 16:39
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
- 15 déc. 2006 à 18:29
Bonjour,

Une très récente discussion sur le forum VB6 me conduit à poser la question suivante sur le forum VB.NET :

Sous VB6, lenmploi de Split me permet d'extraire les chaînes "mot1", "mot2" et "mot3) de la chaine :
"mot1totomot2totomot3" en utilisant la chaîne "toto" comme séparateur.

Les questions :

Question: est-il possible, sous VB.NET, de faire la même chose en utilisant Split ?

----------question1 : si oui, avec quelle syntaxe (avec Split, pas autrement) ?
----------question2 : si non : quelqu'un saurait-il pourquoi VB.NET n'a pas inclus cette possibilité ?
---------------question2a : que faudrait-il alors utiser (autre que split) pour y parvenir sous VB.NET ?
---------------question2b : que devraient alors de préférence écrire sous VB6 ce qui ont l'intention de migrer un jour leur application vers VB.NET ?

Je serais particulièrement reconnaissant à ceux qui voudront bien répondre à ces questions de bien vouloir éviter tout exposé autre que purement technique.

Merci d'avance à ceux qui accepteraient de répondre.

23 réponses

Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
15 déc. 2006 à 17:56
Oui, tu peut aussi faire ca en .net
TaString.IndefOf, TaString.Lenght, TaString.SubString






__________
Kenji
3
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
15 déc. 2006 à 16:46
Salut,

Ne plus utililiser le Split directement comme en vb6.
Il faut du bon framework :





Dim TaString As String = "Hello Word !!! Comment va tu jmf ???"
Dim TableauDeDestination As String() = TaString.Split(" "c),

----

(Coloration syntaxique automatique par Kenji)




__________
Kenji
0
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
15 déc. 2006 à 16:49
Ha pardon, j'ai sauté un truc.
Avec le "toto" ... je fait des testes et je te dis.






__________
Kenji
0
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
15 déc. 2006 à 16:53
Non apparament, ce n'est pas possilbe, on peut splitter avec plusieurs caractéres mais pas avec un mot.
Donc la solution est, on remplace les "toto" pas un caractere et on split avec ce caractere :



Dim TaString As String = "HellototoWordtoto!!!totoCommenttotovatototutotojmftoto???"
Dim TableauDeDestination As String() = TaString.Replace("toto", System.Convert.ToChar(0)).Split(System.Convert.ToChar(0)),

----

(Coloration syntaxique automatique par Kenji)







__________
Kenji
0

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

Posez votre question
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
15 déc. 2006 à 16:54
Tu peux trouver la fonction Split dans le namespace Microsoft.VisualBasic. Mais elle n'a pas beaucoup d'interet. EN effet quel est l'interet de faire du VB6 sous .Net autant rester en VB6

Sinon pour rester dans le code .NET, il te faut utiliser la méthode Split implémentée par la classe string. Tu pourras trouver toutes les surcharges disponibles sur cette page : http://msdn2.microsoft.com/fr-fr/library/system.string.split(vs.80).aspx

Pour ton exemple ça donne TonTableau = TaChaine.Split("toto")

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 16:59
Merci merci (je l'avais lu...)
Mais quid de la question finale (en réalité la finalite même de ce sujet) :
---------------question2b : que devraient alors de préférence écrire sous VB6 ceux qui ont l'intention de migrer un jour leur application vers VB.NET ?
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 17:00
et également (important) quid de la réponse à :
----------question2 : si non : quelqu'un saurait-il pourquoi VB.NET n'a pas inclus cette possibilité ?

Quelqu'un la connait-il ?
0
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
15 déc. 2006 à 17:03
En effet casy, je n'avais pas pour les chaines.
Par contre c'est un tableau qu'il veut :



Dim TaString As String = "HellototoWordtoto!!!totoCommenttotovatototutotojmftoto???"
Dim TableauDeDestination As String() = TaString.Split(New String() {"toto"}, System.StringSplitOptions.None),

----

(Coloration syntaxique automatique par Kenji)





__________
Kenji
0
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
15 déc. 2006 à 17:04
Pour ta question 2b, en VB6 tu n'a pas le choix, donc partant de là ........

Pour la question 2, VB.NET inclut cette possibilité c'est clairement dit dans l'aide.

Un petit bout de code (très sale) pour ton exemple

Dim chaine As String = "mot1totomot2totomot3"
Dim table() As String
Dim sep() As String = {"toto"}

table = chaine.Split(sep, System.StringSplitOptions.None)

For Each s As String In table
        MsgBox(s)
Next

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 17:14
"Pour ta question 2b, en VB6 tu n'a pas le choix, donc partant de là ........"



Merci Casy, mais c'est là un constat, pas une explication du choix fait par VB.Net (ce qui m'intéresse, c'est pourquoi ne pas avoir fait directement, comme VB6. En d'autres termes : quelle pouvait donc être la gêne technique ?)
0
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
15 déc. 2006 à 17:34
Ben outre le fait que en .NET tout est object et classe tu constatera que la methode .Net offre nettement plus de possibilités et d'horizons que la fonction VB6.
Partant de là il étais logique que cette fonction soit reorganisée.

Deplus étant une fonction de traitement de chaines, il été logique qu'elle soit intégrée dans la classe string.

Bref, personellement, l'évolution faite par M$ ne me choque pas sur ce point, au contraire.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 17:43
Elle est loin de me choquer, Casy.
Là n'est pas le point...

Le point est celui de déterminer avec précision les "petits obstacles" susceptibles d'être rencontrés lors d'une migration et, si possible, de voir si une autre façon d'écrire d'emblée sous VB faciliterait cette migration (le moins possible à transformer).

La question finale est donc maintenant celle-ci :

Si, au lieu d'utiliser Split sous VB6, on écrivait en ne se servant que de Instr, Len et Mid :
Y aurait-il un iota à transposer pour migrer ?

(Tu l'avais vue venir, cette question, hein ?)
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 17:45
Je rappelle que je n'attends pas des considérations, mais une réponse (ici : oui ou non, donc)
0
lemoret
Messages postés
37
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
11 mars 2007

15 déc. 2006 à 17:48
la question est simple. Pour écrire en pur framework hors espace de nom VB il faudrait aussi modifier le code. En utilisant l'espace de nom VisualBasic il n'y aurait rien à modifier ni avec split ni sans
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 17:55
Je répète donc ma question :

La question finale est donc maintenant celle-ci :

Si, au lieu d'utiliser Split sous VB6, on écrivait en ne se servant que de Instr, Len et Mid :
Y aurait-il un iota à transposer pour migrer ?
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 17:59
Merci à tous ceux qui ont bien voulu participer à cette conversation, dont je rappelle qu'elle n'a pas pour but de comparer des mérites entre VB et VB.net, mais tout autre chose.

Merci
0
lemoret
Messages postés
37
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
11 mars 2007

15 déc. 2006 à 18:05
Oui, elle sert juste à démontrer qu'il faut ou tout réécrire ou faire un copier/coller puisque l'espace de nom VisualBasic sert justement à cela
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 18:11
C'est TON point de vue, Lemoret....
Su tu permets : J'AI posé MES questions et ai eu des réponses.
Je ne vois pas ou est ton problème et n'ai pas demandé de commentaires autres que des réponses à des questions (je l'ai même précisé d'emblée)
0
lemoret
Messages postés
37
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
11 mars 2007

15 déc. 2006 à 18:15
Ce n'est pas mon point de vue, ni un commentaire.
En VB 2005 la notation

Dim toto()
As
Stringtoto = Split(

"mot1totomot2totomot3",
"toto")MsgBox(toto(0))

fonctionne parfaitement en ne nécessite aucune réécriture, sauf si on souhaite ne pas utiliser l'espace de nom VisualBasic. Et si on utilise pas cet espace de nom, alors il n'y a plus de Len, plus de Mid et plus de InStr non plus.
C'est bien la réponse à ta question ?
0
Charles Racaud
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
15 déc. 2006 à 18:20
Non ce n'est pas la réponse à sa question.
Il veut en .net pas vb6. Le Microsoft.VisualBasic, je sais même pas pourquoi il existe il est à banir, vu que c'est du vb6. C'est d'ailleur pour ca que je préfére le C#, il n'existe pas.






__________
Kenji
0