2009-07-01 8 views
0

je dois un fichier texte dans le format suivant:Lire fichier texte avec le format de tabulation et retour carraige pour les stocker dans le tableau

Mot [tab] [tab] Mot [Retour chariot]
mot [tab] [tab] mot [Retour chariot]
mot [tab] [tab] mot [Retour chariot]

Je veux obtenir tous les mots avant l'onglet dans un tableau ou pour créer un nouveau fichier texte et tous les mots après l'onglet dans un autre tableau ou créer un nouveau fichier texte aussi.

Voici ma fonction pour obtenir les mots avant onglet dans un tableau:

protégé Sous MakeWordListBeforeTab()

Dim filename As String = "D:\lao\00001.txt" 

    'read from file' 
    Dim MyStream As New StreamReader(filename) 

    'words before tab 
    Dim WordBeforeTabArr() As String = MyStream.ReadToEnd.Split(CChar("\t")) 
    MyStream.Close() 

    'test to see the word in array 
    For d As Integer = 0 To WordBeforeTabArr.Length - 1 
     MsgBox(WordBeforeTabArr(d)) 
    Next 

End Sub 

J'ai écrit la fonction ci-dessus pour obtenir tous les mots avant onglet mais j'ai tous les mots dans le tableau. J'ai essayé d'utiliser la méthode Split ci-dessus. Quelle est une autre méthode pour diviser ces mots? Quelqu'un peut-il me montrer du code pour que cela soit bien fait? Je sais que cela peut être fait avec une expression régulière, mais je ne connais pas encore regex. Si vous pouvez me montrer comment faire cela avec regex, ce sera génial. Merci.

Répondre

2

Vous pouvez essayer la fonction split sur String. Il pourrait être utilisé comme ceci:

Dim lines() As String = IO.File.ReadAllLines(filename) 
For Each line As String In lines 
    Dim words() As String = _ 
    line.Split(New Char() {vbTab}, StringSplitOptions.RemoveEmptyEntries) 
Next 

Le tableau de mots pour chaque ligne serait les deux mots. Un mot à chaque position. Vous pouvez remplir vos deux tableaux ou écrire les valeurs dans un fichier texte ou un fichier lorsque vous divisez les lignes du fichier d'entrée dans la boucle.

+0

Oui, cela fonctionne. Merci. –

0

tout d'abord le code ci-dessus ne compilait: Voir le code approprié comme suit:

Dim lines() As String = IO.File.ReadAllLines(test_Filename) 
For Each line As String In lines 
    Dim words() As String = _ 
    line.Split("\t".ToCharArray()(0), StringSplitOptions.RemoveEmptyEntries) 
Next 
Questions connexes