Imports System.Text.RegularExpressions
Public Class ClassPostprocessing
Public Shared Function Get_Nachbearbeitung_Wert(idxvalue As String, DTNB As DataTable) As String
Dim result As String = idxvalue
Try
For Each row As DataRow In DTNB.Rows
Select Case row.Item("TYPE").ToString.ToUpper
Case "VBSPLIT"
If LogErrorsOnly = False Then ClassLogger.Add(" ... Nachbearbeitung mit VBSPLIT", False)
Dim strSplit() As String
strSplit = result.Split(row.Item("TEXT1"))
For i As Integer = 0 To strSplit.Length - 1
If i = CInt(row.Item("TEXT2")) Then
If LogErrorsOnly = False Then ClassLogger.Add(" ... Split-Ergebnis für Index (" & i.ToString & "): " & strSplit(i), False)
result = strSplit(i).ToString
End If
Next
Case "VBREPLACE"
If LogErrorsOnly = False Then
ClassLogger.Add(" ... Nachbearbeitung mit VBREPLACE", False)
ClassLogger.Add(" ... Ersetze '" & row.Item("TEXT1") & "' mit '" & row.Item("TEXT2") & "'", False)
result = result.Replace(row.Item("TEXT1"), row.Item("TEXT2"))
End If
result = result.Replace(row.Item("TEXT1"), row.Item("TEXT2"))
Case "Regular Expression"
If LogErrorsOnly = False Then ClassLogger.Add(" ... NAchbearbeitung mit RegEx", False)
Dim RegexList As New List(Of System.Text.RegularExpressions.Regex)
Dim Regex As New System.Text.RegularExpressions.Regex(row.Item("TEXT1"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
RegexList.Add(Regex)
'
Dim resultRegex = ClassPostprocessing.extractFromStringviaRE(result, RegexList)
If Not IsNothing(resultRegex) Then
If LogErrorsOnly = False Then ClassLogger.Add(" ... Ergebnis des RegEx: " & resultRegex.ToString, False)
result = resultRegex.ToString
Else
ClassLogger.Add("Postprocessing RegEx konnte kein ergebnis auswerten!", True)
End If
End Select
Next
Return result
Catch ex As Exception
ClassLogger.Add(" - Unvorhergesehener Fehler bei Get_Nachbearbeitung_Wert - result: " & result & " - Fehler: " & vbNewLine & ex.Message)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Get_Nachbearbeitung_Wert:")
Return result
End Try
End Function
'''
''' Extrahiert aus dem String anhand einer Liste von Regular Expressions ein Ergebnis.
'''
''' Der zu untersuchende String erzeugt wurden.
''' Eine Liste von Regular Expressions
''' Die Ergebnisgruppe, die die Adresse enthält
''' Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte.
Public Shared Function extractFromStringviaRE(SearchString As String, RegexList As List(Of Regex), Optional RegexGroup As Integer = 1)
If IsNothing(SearchString) Then
Return Nothing
End If
For Each rx In RegexList
Dim match As Match = rx.Match(SearchString)
Dim result As String = match.Groups(RegexGroup).Value
If Not String.IsNullOrWhiteSpace(result) Then
'Nur den ersten Wert zurückgeben
Return result
End If
Next
Return Nothing
End Function
End Class