Bestimmte Werte aus Textdatei auslesen

  • Hallo,

    Ich hab folgendes Problem. Ich habe eine Textdatei die üngefähr so aussieht:

    Code
    Titel:
    Titel des Buches
    Autor:
    Autor 1 des Buches
    Autor 2 des Buches
    Abstract:
    Abstract des Buches
    .
    .
    .

    Ich will Informationen rauslesen wie den Titel des Buches und den Autor und diese dan in einen Textdatei schreiben. Ich schaffe es schon eine bestimmte Zeile auszulesen und diese in eine neue Textdatei zu schreiben.

    Hier der Code dazu:

    Spoiler anzeigen

    Nur ich schaffe es nicht das das Programm automatisch erkennt in welcher Zeile der Autor steht und mir dan die dan die Zeilen "Autor:" und die Autoren des Buches ausgibt. Kann mir jemand einen Tip geben wie ich das umsetzen kann?


    MfG
    BOSSnier

    Einmal editiert, zuletzt von BOSSnier (12. Juli 2012 um 18:46)

  • [autoit]

    #include <Array.au3>
    Global $s_Path = 'test.txt'
    _ArrayDisplay (StringRegExp (FileRead ($s_Path), 'Autor (.+)', 3))

    [/autoit]


    Oder...

    [autoit]

    Global $s_Path = 'test.txt'
    Global $s_Read, $i_Error, $i_Line = 0

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

    Do
    $i_Line += 1
    $s_Read = FileReadLine ($s_Path, $i_Line)
    $i_Error = @error
    If StringInStr ($s_Read, 'Autor') Then MsgBox (0, '', $s_Read)
    Until $i_Error = -1

    [/autoit]
  • Okay vielen Dank ich versuche dan mal weiter mein kleines programm zusammenzubasteln :cursing:

  • Hier noch ein RegEx Möglichkeit:

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

    $sTxt = _
    "Titel:" & @CRLF & _
    "Titel des Buches" & @CRLF & _
    "Autor:" & @CRLF & _
    "Autor 1 des Buches" & @CRLF & _
    "Autor 2 des Buches" & @CRLF & _
    "Autor 3 des Buches" & @CRLF & _
    "Abstract:" & @CRLF & _
    "Abstract des Buches"

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

    $sTitel = StringRegExpReplace($sTxt, "(?si)(.*)Titel:\s*(.*)Autor:(.*)", "$2")
    $sAutor = StringRegExpReplace($sTxt, "(?si)(.*)Autor:\s*(.*)\s+Abstract:(.*)", "$2")
    MsgBox(0, "Test", "Titel: " & $sTitel & @CRLF & _
    "Autor(en): " & @CRLF & $sAutor)

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯