Faire un split à 2 niveaux

Résolu
Sardonnen Messages postés 89 Date d'inscription lundi 29 avril 2002 Statut Membre Dernière intervention 6 décembre 2006 - 28 mars 2006 à 10:11
cristiny Messages postés 10 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 21 juillet 2011 - 27 avril 2006 à 17:58
bonjour,
je souhaiterais recuperer les données d'un fichier texte et les positionner dans un tableau dynamique pour ensuite les retraivailler.

mon fichier texte ce compose de la sorte

nom;prenom;adresse;code postal;ville
nom1;prenom1;adresse1;code postal1;ville1

Dim sFilename As String
sFilename = Server.MapPath(chemin & fichier)
Dim oFileread As System.IO.StreamReader


' on vient lire le fichier
oFileread = New System.IO.StreamReader(sFilename)
' on le split dans une table
Dim trad,tbl_data As array

trad = Split(oFileread.ReadToEnd, vbCrLf, -1, 1)
' on referme le fichier
oFileread.Close()

mais le hic c'est que là je recupere toute la ligne alors que je voudrais avoir
trad(0,0) =nom
trad(0,1)=prenom
trad(0,2)=adresse
....
trad(1,0) =nom1
trad(1,1)=prenom1
trad(1,2)=adresse1

comment dois je faire???
merci

4 réponses

Sardonnen Messages postés 89 Date d'inscription lundi 29 avril 2002 Statut Membre Dernière intervention 6 décembre 2006
28 mars 2006 à 16:01
Ca y est j'ai trouvé ce que je voulais

<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>

<SCRIPT language="VB" runat="server">
Dim Temp As New System.Text.StringBuilder
'Chemin d'accès de la page à insérer
dim filename , filepath as string
' mon fichier a traiter
filename="mon_fichier.csv"
' mon repertoire sur le serveur
filepath="mon_repertoire"
dim ch_file As String = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath) & filepath & filename
dim oFileread As System.IO.StreamReader
' lecture du fichier
oFileread = New System.IO.StreamReader(ch_file)
' on le split dans une table
dim trad as array
trad = Split(oFileread.ReadToEnd, vbCrLf, -1, 1)
' fermeture du fichier
oFileread.Close()
' collecte les données ligne par ligne pour les mettre dans un tableau dynamique
dim i,z as integer, tbl_data(ubound(trad),2) as string, trad1 As string()
for i = 0 to ubound(trad) - 1
trad1 = split(trad(i).ToString, ";")
for z = 0 to 2
tbl_data(i,z) = trad1(z).ToString
next
next


' affiche vos données
for i = 0 to ubound(trad) - 1
response.write ("nom : " & tbl_data(i,0) & "
prenom : " & tbl_data(i,1) & "
email : " & tbl_data(i,2) & "
")
next
End If
</script>
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
28 mars 2006 à 10:41
bonjour,

c'est normal que tu as ca tu n'as fait que découper ton fichier en plusieurs lignes, il faut maintenant découper tes lignes en plusieurs mots.

dim trad as string()

for i as integer = 0 to trad.length
trad(i) = trad(i).split(";")
next


<HR>
Cyril - MVS - MCP
0
Sardonnen Messages postés 89 Date d'inscription lundi 29 avril 2002 Statut Membre Dernière intervention 6 décembre 2006
28 mars 2006 à 11:03
Merci pour ta réponse mais en copiant ton code j'obtiens ce message d'erreur

Une valeur de type 'Tableau 1-dimensionnel de String' ne peut pas être convertie en 'String'.

sur la ligne

trad(i) = trad(i).split(";")

Mais avec ton exemple j'obtiens bien un tableau de type
trad(0,0) =nom
trad(0,1)=prenom
trad(0,2)=adresse
....
trad(1,0) =nom1
trad(1,1)=prenom1
trad(1,2)=adresse1

car j'ai l'impression que je vais plutot obtenir ceci
trad(0) =nom
trad(1)=prenom
trad(2)=adresse
....
0
cristiny Messages postés 10 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 21 juillet 2011
27 avril 2006 à 17:58
Faut il des references particulieres car je n'arrive pas a incrementer ce code?
Merci 

Cristiny
0