Imports System.Text.RegularExpressions Imports DigitalData.Modules.Base Imports DigitalData.Modules.Logging Public Class ClassPostprocessing Inherits BaseClass Public Const VBSPLIT = "VBSPLIT" Public Const VBREPLACE = "VBREPLACE" Public Const REGEXPRESSION = "REG. EXPRESSION" Public Sub New(pLogConfig As LogConfig) MyBase.New(pLogConfig) End Sub Public Function Get_Nachbearbeitung_Wert(idxvalue As String, Datatable As DataTable) As String Dim oIndexValues As List(Of String) = idxvalue.Split(ClassConstants.VECTORSEPARATOR).ToList() Try For Each oDataRow As DataRow In Datatable.Rows Dim oResult As New List(Of String) Dim oType As String = oDataRow.Item("TYPE").ToString.ToUpper Logger.Info(" ...Nachbearbeitung mit [{0}]", oType) Select Case oType Case VBSPLIT Dim oSeparator As String = oDataRow.Item("TEXT1") Dim oSplitIndex As Integer = 0 Integer.TryParse(oDataRow.Item("TEXT2"), oSplitIndex) For Each oIndexValue In oIndexValues Dim oSplitted As List(Of String) = oIndexValue.Split(oSeparator).ToList() oResult.Add(oSplitted.Item(oSplitIndex)) Next Case VBREPLACE Dim oFindString = oDataRow.Item("TEXT1") Dim oReplaceString = oDataRow.Item("TEXT2") Logger.Info(" ...Ersetze '" & oFindString & "' mit '" & oReplaceString & "'") For Each oIndexValue In oIndexValues Dim oReplaceResult = oIndexValue.Replace(oFindString, oReplaceString) oResult.Add(oReplaceResult) Next Case REGEXPRESSION Dim oRegexList As New List(Of Regex) Dim oRegex As New Regex(oDataRow.Item("TEXT1"), RegexOptions.IgnoreCase) oRegexList.Add(oRegex) For Each oIndexValue In oIndexValues Dim oProcessedString = ExtractFromStringWithRegex(oIndexValue, oRegexList) oResult.Add(oProcessedString) Logger.Info(" ...Ergebnis des RegEx: " & oProcessedString) Next End Select oIndexValues = oResult Next Catch ex As Exception Logger.Error(ex) End Try Return String.Join(ClassConstants.VECTORSEPARATOR, oIndexValues.ToArray) 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. Private Function ExtractFromStringWithRegex(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