Nicht optimiert, grundsätzlich aber funktionabel... falls die Routinen im CSV-Editor den @autoBert genannt hat das nicht können... Brauchte sowas in der Art mal bei einem anderen Projekt... vielleicht hilft es dir ja
Der Funktion wirfst du die einzelnen Zeilen der Datei hin und bekommst damit dann die einzelnen CSV-Felder in einem 1-basierten Array zurück.
AutoIt
$sTEST = '"AHI_";;;;"Apnoe-Hypopnoe-Index";;;;;;;;;"";"Apnoe-Hypopnoe-Index $m1\c:FF\____$m0\c:-\/Stunde [normal: >5; Störungen: „mild“: AHI 5-15,\r„moderat“: AHI 15-30, schwer“: AHI > 30/Stunde nach der Amerikanischen Gesellschaft für Schlafmedizin (AASM)].$m0";"";"";"";"";"";"GKIRSCH";FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;"";FALSE;""'
$aTest = _ProcessLine($sTEST)
Func _ProcessLine($sLine)
Local $fInString = False
Local $sElement = ""
Local $aOutput[1] = [0]
For $i = 1 To StringLen($sLine)
$sTarget = StringLeft(StringTrimLeft($sLine, $i-1), 1)
If $sTarget = '"' And $fInString = False Then
$fInString = True
$sElement &= $sTarget
ContinueLoop
EndIf
If $sTarget = '"' And $fInString = True Then
$fInString = False
$sElement &= $sTarget
ContinueLoop
EndIf
If $sTarget = ';' And $fInString = False Then
ReDim $aOutput[UBound($aOutput)+1]
$aOutput[UBound($aOutput)-1] = $sElement
$sElement = ""
ContinueLoop
EndIf
If $sTarget = ';' And $fInString = True Then
$sElement &= $sTarget
ContinueLoop
EndIf
$sElement &= $sTarget
Next
$aOutput[0] = UBound($aOutput) - 1
Return $aOutput
EndFunc
Alles anzeigen