Textfile ins Array

  • Hallo Leute,

    ich steht gerade so dermaßen auf dem Schlauch (Kopfweh) und brauche einen kleinen Stupser.

    Textdateibeispiel:

    vorname1|nachname1
    vorname2|nachname2
    vorname3|nachname3

    Ich sollte das File auslesen und in ein Array schreiben, habe aber sowas von einer Matchbirne. Bitte um kleinen Beispielcode.

    Danke

    Lösung gefunden:

    [autoit]


    Local $aFile = ""
    _FileReadToArray(@TempDir & "\XFDL_User.log", $aFile)
    Local $a2D[$aFile[0]][2]
    For $i = 1 To $aFile[0]
    $aSplit = StringSplit($aFile[$i], "|")
    $a2D[$i - 1][0] = $aSplit[1]
    $a2D[$i - 1][1] = $aSplit[2]
    Next
    _ArrayDisplay($a2D)

    [/autoit]

    Einmal editiert, zuletzt von HassanMullah (20. Mai 2014 um 11:19) aus folgendem Grund: Local $aFile = "" _FileReadToArray(@TempDir & "\XFDL_User.log", $aFile) Local $a2D[$aFile[0]][2] For $i = 1 To $aFile[0] $aSplit = StringSplit($aFile[$i], "|") $a2D[$i - 1][0] = $aSplit[1] $a2D[$i - 1][1] = $aSplit[2] Next _ArrayDisplay($a2D)

    • Offizieller Beitrag

    Brauchst du bei der einfachen Struktur nicht erst in ein Array lesen und dann splitten. Kannst du mit RegExp in ein 1D-Array schreiben:

    [autoit]

    ;~ $sText = FileRead('Deine.Datei')

    [/autoit][autoit][/autoit][autoit]

    $sText = _
    "vorname1|nachname1" & @CRLF & _
    "vorname2|nachname2" & @CRLF & _
    "vorname3|nachname3" & @CRLF

    [/autoit][autoit][/autoit][autoit]

    $aText = StringRegExp($sText, '(.+)\|(.+)', 3)
    _ArrayDisplay($aText) ; == Index gerade + FolgeIndex bilden immer ein Paar (0 & 1, 2 & 3 ...)

    [/autoit]
  • Wenn du die aktuelle Beta-Version von AutoIt (v.3.3.11.5) verwendest kannst du es auch so machen:

    [autoit]

    #include <Array.au3>
    #include <File.au3>

    [/autoit][autoit][/autoit][autoit]

    $a_Array = _FileReadToArray("Test.txt", 0, "|")
    _ArrayDisplay($a_Array)

    [/autoit]