webForumDet fria alternativet

Regexp, matcha tom sträng

ASP

2 svar · 419 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej

Jag har följande fina funktion:

Function GetFieldValue(sKey, sText)
    Dim re, m
    Set re = New RegExp
    re.Pattern = "(?:^|[\r\n]{1,2})" & sKey & ":\s+"
    If LCase(sKey) = "felbeskrivning" Then
        re.Pattern = re.Pattern & "((?:.|\r|\n)*)"
    Else
        re.Pattern = re.Pattern & "([^\r\n]*)"
    End If
    Set m = re.Execute(sText)
    If m.Count > 0 Then
        GetFieldValue = m(0).SubMatches(0)
    Else
        GetFieldValue = ""
    End If
End function

Man anropar den tex så här:

sCustomerNo=GetFieldValue("Kundnr", sMsg)

Filen som läses av ser ut så här:

Kundnr:
Namn: Henrik Lindell
Adress: Träsmedsvägen 13
Postnr: 370 42
Ort: Orten
Telefonnr: 0455-11111
Mobilnr: 0700 - 123456
Modell: IVT
Serienr: 123456789
Tillverkningsår: 2008
Felbeskrivning: Testar igen!

Om tex Kundnr är tomt, så blir det fel. Hur modifierar man schemat, att Getfieldvalue blir en tom sträng om nägot fält saknas?

:)

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#2
Function GetFieldValue(sKey, sText)
    Dim re, m
    Set re = New RegExp
    re.Pattern = "(?:^|[\r\n]{1,2})" & sKey & ":[ ]*"
    If LCase(sKey) = "felbeskrivning" Then
        re.Pattern = re.Pattern & "((?:.|\r|\n)+)"
    Else
        re.Pattern = re.Pattern & "([^\r\n]+)"
    End If
    Set m = re.Execute(sText)
    If m.Count > 0 Then
        If m(0).SubMatches.Count > 0 Then
            GetFieldValue = m(0).SubMatches(0)
        Else
            GetFieldValue = ""
        End If
    Else
        GetFieldValue = ""
    End If
End function
Medlem sedan jan. 20013 582 inlägg
#3

Thanx! :p

Mvh
Henrik

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)