Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VB.NET]For each

Sujet résolu
    29 juin 2011 à 16:26:45

    Bonjour,
    J'ai un petit problème: j'ai un fichier texte.txt et j'aimerais grâce a mon programme vb envoyer tous les mots un par un vers une fonction. Mon problème donc : Je connais la boucle For each pour une lettre, mais pour un mot ? J'ai bien pensé à faire "pour chaque espace", mais je ne sais pas comment ensuite séparer le mot trouvé ...
    Je suis complètement bloqué :)
    merci d'avance
    proust96
    • Partager sur Facebook
    • Partager sur Twitter
      29 juin 2011 à 16:39:39

      Salut,

      Ceci peut-être?

      string myText = "Un petit texte tout beau";
      string[] words = myTest.Split(' ');
      
      foreach(string word in words)
      {
         //écriture du mot
      }
      


      C'est en C# mais l'idée reste la même, utilisé Split ;)
      • Partager sur Facebook
      • Partager sur Twitter
        29 juin 2011 à 16:55:38

        Merci de ta réponse
        J'ai essayé de transcrire en vb.net et j'obtiens :
        Public Class Form1
        
            Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                Dim myText As String = "Un petit texte tout beau"
                Dim words(500) As String
                words = myText.Split(" ")
        
        for each(string  in myText)
        
                    'écriture du mot
                Next
        
            End Sub
        
        
        End Class
        


        mais j'ai un problème avec les arguments de la boucle for each
        et avec la ligne
        words = myText.Split(" ")
        faut il que je fasse une boucle du style
        dim i as integer
        while i < 500
        words(i) = myText.split(" ")
        

        ??
        en tout cas merci :)
        • Partager sur Facebook
        • Partager sur Twitter
          29 juin 2011 à 16:58:43

          Ah! je suis bête...

          il manque un .ToArray() donc :

          words.Split(" ").ToArray()

          EDIT: par ailleur, pour éviter de spécifier une grandeur a ton array, tu peux utiliser un List<string> à la place et utiliser .ToList() au lieu de ToArray()
          • Partager sur Facebook
          • Partager sur Twitter
            29 juin 2011 à 17:08:41

            Citation : proust96

            Merci de ta réponse
            J'ai essayé de transcrire en vb.net et j'obtiens :

            Public Class Form1
            
                Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                    Dim myText As String = "Un petit texte tout beau"
                    Dim words(500) As String
                    words = myText.Split(" ")
            
            for each(string  in myText)
            
                        'écriture du mot
                    Next
            
                End Sub
            
            
            End Class
            




            Il y a une petite erreur dans ton code : tu définis un tableau "words" pour stocker tous tes mots, mais tu ne l'utilise pas dans ton foreach ;)

            Et +1 pour l'utilisation de List<String>
            • Partager sur Facebook
            • Partager sur Twitter
              29 juin 2011 à 17:14:45

              A oui bien sûr, je pensais que c'était le For each qui me coupait mes mots :)
              donc le code serait
              Public Class Form1
              
                  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                      Dim myText As String = "Un petit texte tout beau"
                      Dim words(500) As String
              dim word as string        
              words = myText.Split(" ").Tolist(List(MyText))
              
              for each(word  in words)
              
                          'écriture du mot
                      Next
              
                  End Sub
              
              
              End Class
              

              C'est mieux ?
              En tout cas merci de vos réponses !
              • Partager sur Facebook
              • Partager sur Twitter
                29 juin 2011 à 17:40:38

                Public Class Form1
                
                    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                        Dim myText As String = "Un petit texte tout beau"
                        Dim words As List<string>
                dim word as string        
                words = myText.Split(" ").ToList()
                
                for each(word in words)
                
                            'écriture du mot
                        Next
                
                    End Sub
                
                
                End Class
                
                • Partager sur Facebook
                • Partager sur Twitter
                  30 juin 2011 à 0:06:27

                  Bonsoir,

                  Loin de moi l'idée de vouloir faire de la pré-optimisation, mais là je vois pas trop l'intérêt de la List (même si elle peut dans d'autres cas), ceci suffit normalement :
                  Public Class Form1
                  
                      Private myText As String = "Un petit texte tout beau"
                  
                      Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
                          Dim words As String() = myText.Split(" ")
                  
                          For Each word In words 'For Each word As String In words 'si on veut typer explicitement au lieu d'inférer
                              'écriture du mot
                          Next
                  
                      End Sub
                  
                  End Class
                  


                  Cordialement !
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Censément, quelqu'un de sensé est censé s'exprimer sensément.
                    30 juin 2011 à 2:05:59

                    Oui c'Est vrai, le Tableau suffit amplement, c,est tout simplement une habitude que j'ai d'utilisé les List à mon boulot. C'est l'habitude qui reste ^^
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [VB.NET]For each

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown