0
votes

Trouver une séquence de nombres dans le fichier texte

Bonjour, j'ai beaucoup de problèmes avec cette tâche qui m'a été donnée. J'ai besoin de trouver une séquence de 8 numéros consécutifs dans un fichier texte et de mettre cette ligne dans une zone msg. Jusqu'à présent, je n'ai trouvé que xxx

mais ça ne m'aidera pas, je suppose

éditer: Un exemple de ligne Woudl ressemble à ceci: xxx

Dans ce cas, je aurais besoin du 10793013 en tant que sortie

EDIT 2: Ceci est le code que j'ai actuellement réussi à créer xxx

le compteur lui-même semble fonctionner cependant pour une raison quelconque, aucune entrée ne se retrouve dans ma liste. Est-ce que je manque un cas où les entrées sont supprimées? PS: J'espère que cela ne vous dérange pas des noms de variables allemands. Si vous faites xxx


4 commentaires

Alors qu'est-ce qui manque exactement? Vous avez probablement besoin d'un compteur pour vérifier la consécutivité, non?


@Falcoalexander c'est exactement ce dont j'ai besoin


Ensuite, essayez de l'introduire dans votre clause IF et de la réinitialiser à zéro une fois que ce n'est pas numérique!


Je ne vois que 3 possibilités de "une séquence de 8 nombres consécutifs". 01234567, 12345678, 23456789 Est-ce ce que vous recherchez? Ou cherchez-vous des 8 chiffres de suite.


3 Réponses :


0
votes

Essayez d'introduire un compteur pour vérifier la consécutivité de votre clause IF et réinitialisez-la et de résultat à zéro une fois qu'il n'est pas numérique!

Dim result As String = ""
Dim conCounter As Integer = 0
For Each i As Char In fileLocation
    If Char.IsDigit(i) Then
        conCounter = (conCounter + 1)
        result = (result + i)
    Else
        conCounter = 0
        If (result.Length < 8) Then
            result = ""
        End If
        
    End If
    
Next
MsgBox(result)


0 commentaires

0
votes
for each word in fileLocation
Dim noExp As New Regex("([0-9]{8,11})")
Dim m As Match = noExp.Match(word)
If Not m.Success Then Throw New Exception("No sequence number found")
Dim c = m.Groups(1).Captures(0)
Msgbox(c.value)
next
how about this ?

0 commentaires

1
votes

Voici une autre approche pour essayer:

Dim values() As String
Using objReader As New System.IO.StreamReader(fileLocation)
    Do While Not objReader.EndOfStream
        values = objReader.ReadLine().Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
        For Each value As String In values
            value = value.Trim()
            If value.Length = 8 AndAlso value.All(Function(c) Char.IsDigit(c)) Then
                ListBox1.Items.Add(value)
                Exit For
            End If
        Next
    Loop
End Using


0 commentaires