Split, VB.net et VB6 [Résolu]

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
- - Dernière réponse : jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
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.
Afficher la suite 

Votre réponse

20/23 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
3
Merci
Oui, tu peut aussi faire ca en .net
TaString.IndefOf, TaString.Lenght, TaString.SubString






__________
Kenji

Merci Charles Racaud 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
0
Merci
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
Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
0
Merci
Ha pardon, j'ai sauté un truc.
Avec le "toto" ... je fait des testes et je te dis.






__________
Kenji
Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
0
Merci
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
Commenter la réponse de Charles Racaud
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
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 #
Commenter la réponse de cs_casy
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
0
Merci
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 ?
Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
0
Merci
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 ?
Commenter la réponse de jmfmarques
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
0
Merci
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
Commenter la réponse de Charles Racaud
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
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 #
Commenter la réponse de cs_casy
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
0
Merci
"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 ?)
Commenter la réponse de jmfmarques
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
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 #
Commenter la réponse de cs_casy
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
0
Merci
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 ?)
Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
0
Merci
Je rappelle que je n'attends pas des considérations, mais une réponse (ici : oui ou non, donc)
Commenter la réponse de jmfmarques
Messages postés
37
Date d'inscription
vendredi 10 septembre 2004
Dernière intervention
11 mars 2007
0
Merci
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
Commenter la réponse de lemoret
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
0
Merci
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 ?
Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
0
Merci
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
Commenter la réponse de jmfmarques
Messages postés
37
Date d'inscription
vendredi 10 septembre 2004
Dernière intervention
11 mars 2007
0
Merci
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
Commenter la réponse de lemoret
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
0
Merci
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)
Commenter la réponse de jmfmarques
Messages postés
37
Date d'inscription
vendredi 10 septembre 2004
Dernière intervention
11 mars 2007
0
Merci
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 ?
Commenter la réponse de lemoret
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
0
Merci
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
Commenter la réponse de Charles Racaud

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.