Et tips til de som vil lage mer adaptive valutafinnere.
Lag en stykk leter globalt (da det tar noe tid å lage et slikt objekt):
Dim valutaMoenster As String = "^(?<valutakode>\w{3})\s+(?<kurs>\d*,?\d*)"
Dim valutaLeter As Regex = New Regex(valutaMoenster)
Dim treff As Match
Bruk leteren hver gang du er i tvil:
Do While Not fil.EndOfStream()
Dim s As String = fil.ReadLine()
treff = valutaLeter.Match(s.Trim()) ' fjerner innledende blanke
If treff.Success Then
s = treff.Result("${valutakode} ${kurs}")
cboValutakursMeny.Items.Add(s)
End If
Loop
Mønsteret består av:
- "^": (ett tegn) markerer strengens start
- "(?<valutakode>\w{3})": tre alfanumeriske (navngitt "valutakode")
- "\s+": minst en blank
- "(?<kurs>\d*,?\d*)": et desimaltall (navngitt "kurs"), som i "0,33", ",79" eller "3,88".
"\d*": null eller flere siffer
- ",?": ingen eller ett komma
- "\d*": null eller flere siffer
Det blir ingen suksess med valutakurser som "EUR 4.2" (ikke komma), eller bare "EUR " (intet desimaltall).
Ingen kommentarer:
Legg inn en kommentar