Data kommer ofte som tekst (String), hvorfra en henter ut (filtrerer) etter behov. En leter da etter mønster (
pattern) i teksten, f.eks. en akseptabel temperatur. Vi kan bruke IndexOf() og SubString() som i boken, men det kraftigste og mest brukte redskap er regulære uttrykk (
regular expressions), noe boken ikke tar opp. For heltall er letemønstret "\d+" noe som tilsvarer "[0123456789]+" eller, noe enklere skrevet, "[0-9]+". Plusstegnet er en KVANTIFIKATOR som angir at en vil ha minst ett av tegnene foran. Kodeeksempel:
Imports System.Text.RegularExpressions
Function finn_IkkeNegativtHeltall (ByVal strInn As String) As Integer
Dim strMoenster as String = "\d+"
Dim tallLeter as RegEx = new RegEx (strMoenster)
Dim treff as Match
Dim strTall as String
treff = tallLeter.Match( strInn )
strTall = treff.ToString ()
If IsNumeric ( strTall ) Then
Return CInt ( strTall )
Else
Return -1
End If
End Function
For å hente
alle tallene brukes en løkke (noe vi ikke har lært om enda) som går gjennom en treffliste, som under. "Ut" viser tallene atskilt med blank:
Dim alletreff as MatchCollection
alletreff = tallLeter.Matches ( strInn )
For Each treff In alletreff
Ut.Text = Ut.Text & treff.ToString() & " "
Next
For å tillate negative tall setter en inn "-?" foran: "?" betyr at en vil ha null eller ett av foregående tegn ("-"). Hele mønsteret blir da "-?\d+". Hvis en bare vil akseptere heltall etterfulgt av "c", som i "-13c" blir mønsteret "-?\d+c". Tre kvantifikatorer er: "+" (1 eller flere), "?" (ingen eller 1) og "*" (0 eller flere).
Ingen kommentarer:
Legg inn en kommentar