Anzeige

Dateinamen auf Aufbau überprüfen und falls nötig korrigieren


#1
Hallo,

ich habe eine Access Datei über welche per VBA
Ordner Dateien auf Ihren Namen prüfen lasen möchte und falls gewisse Kriterien erfüllt sind erweitern/anpassen.

Die Dateien können entweder den Aufbau haben
1. xxxxxxxx_xxxxxxx_wgewgg_ewgewgw_gwgw_gwg (x sind Zahlen), 8 Zahlen _ 7 Zahlen _Wörer getrennt jeweils mit einem "_" (Unterstrich)
2. xxxxxxxx_xxxxxxx_CUPS-Error_hgerhrh_herhr_herhe_heh

woebei CUPS-Error unterschiedlich geschrieben sein kann
CUPS-Error, CUPS_Error, CUPS-error, CUPS_error, cups-error,c ups_error ect..

nun möchte ich folgendes Prüfen bzw. anpassen

Falls die Datei das Wort ....CUPS... enthält ersetze alles zwischen dem 2. "_" und 3. "_" (Unterschrich) mit dem Wort CUPS-Error
Aus
xxxxxxxx_xxxxxxx_CUPS_Eror_hgerhrh_herhr_herhe_heh wird
xxxxxxxx_xxxxxxx_CUPS-Error_hgerhrh_herhr_herhe_heh

Sollte das Wort CUPS nicht enthalten sein schreibe anstatt dem 2. "_" (Unterschrich) das Wort "_CUPS-Errror_".
Aus
xxxxxxxx_xxxxxxx_wgewgg_ewgewgw_gwgw_gwg wird
xxxxxxxx_xxxxxxx_CUPS-Error_wgewgg_ewgewgw_gwgw_gwg

Vielleicht kann mir hier jemand wegen meinen Problem helfen.
 
#2
Reguläre Ausdrücke sind die einfachste Lösung: https://msdn.microsoft.com/en-us/library/1400241x(v=vs.84).aspx

Ich habe mal ein Pattern zusammengestellt. Hier geht's zur Spielwiese: https://regex101.com/r/qF955A/1

Und das Ganze angewandt:
Visual Basic:
Public Function correctFileName(ByVal iFileName As String) As String
    'Pattern und Replace String definieren
    Const C_PATTERN = "^(\d{8}_\d{7}_)(?:CUPS[^_]+_)?(\S+)$"
    Const C_REPLACE = "$1CUPS-ERROR_$2"
  
    'RegExp Objekt anlegen
    Dim rx As Object
    Set rx = CreateObject("VBScript.RegExp")
    rx.pattern = C_PATTERN
  
    'Dateinamen übernhemen
    correctFileName = iFileName
  
    'Prüfen ob der Dateiname dem Pattern entspricht und ggf den Namen parsen
    If rx.Test(correctFileName) Then correctFileName = rx.replace(correctFileName, C_REPLACE)
End Function
Test im Direktfenster:
Code:
?correctFileName("12345678_1234567_wgewgg_ewgewgw_gwgw_gwg")
12345678_1234567_CUPS-ERROR_wgewgg_ewgewgw_gwgw_gwg

?correctFileName("12345678_1234567_CUPS-Err_hgerhrh_herhr_herhe_heh")
12345678_1234567_CUPS-ERROR_hgerhrh_herhr_herhe_heh
 
Anzeige

Neue Beiträge

Anzeige