[VS2005][VB.NET]détection de chaines de caractères dans un fichier texte
salut tout le monde!
J'ai toujours le même souci avec la détection d'une chaine de caractère dans un fichier texte.
j'ai essayé les expressions régulières avec la méthode regex mais cela n'aboutit pas au résultats souhaités.
Dans un fichier texte je dois détecter une chaine de caractère comprise entre "SG_ " ([A-Za-z][_][\s]) et ":" ([:]) et je ne parviens pas jusqu'à présent à le faire correctement.
exemple de lignes où je détecte cette chaine de caractères:
SG_ CMPT_PROC4 :
SG_ CHECK_SUM_CMD_BRI_1 :
j'ai ecri ce code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Public Function Func1(ByVal line As String) As String
Dim r As New RegularExpressions.Regex("[0-9]+", RegularExpressions.RegexOptions.Compiled)
Return r.Match(line).Groups(0).Value
End Function
Public Function Func2(ByVal line2 As String) As String
Dim r As New RegularExpressions.Regex("[_][\s][a-zA-Z0-9]+[_]?[a-zA-Z0-9]+", RegularExpressions.RegexOptions.Compiled)
Return r.Match(line2).Groups(0).Value
End Function
Public Sub lecture(ByVal fichier As String)
Do
ligne = SR.ReadLine()
Loop Until (str = ligne.IndexOf("BO_"))
ID = Func1(ligne)
SW.WriteLine(ID)
SW.WriteLine("ID_received =" & ID)
Do
If str = ligne.IndexOf("BO_") Then
ligne2 = SR.ReadLine()
donnée = Func2(ligne2)
SW.WriteLine("Dim" & donnée & " as integer")
End If
Loop Until chaine <> ligne2.IndexOf(" SG_") '& ligne2.LastIndexOf(":")
SR.Close()
SW.Close()
End Sub |
et sur le fichier texte j'ai:
70
ID_received =70
Dim_ CMPT_PROC4 as integer
Dim_ CHECK_SUM as integer
Dim_ SBRI1_2 as integer
Dim_ SBRI1_1 as integer
Dim_ SBRI1_0 as integer
Dim_ SBRI5_2 as integer
Dim_ SBRI5_3 as integer
Dim_ SBRI5_1 as integer
Dim_ int_anti as integer
Dim_ int_anti as integer
Dim as integer
mais j'ai toujours "l'underscore" (_) au début et j'arrive pas à récupérer une longue chaine comme : CHECK_SUM_CMD_BRI_1 et je récupère juste CHECK_SUM.
j'ai bien fouillé dans les expressions régulières mais j'ai pas trouvé de solutions parfaites pour cette application.
je viens de tester
Code:
1 2
|
chaine_test = ligne2.IndexOf("SG_") & "" & ligne2.EndsWith(":") |
mais pas de résultats.
j'attends vos idées et solutions et merci d'avance.