Problem mit Array in String umwandeln

  • Hi,

    ich habe ein Script geschrieben um Liedtexte von einer Seite auszulesen. Zum Prüfen ob die Daten auch alles richtig erkannt wurden habe ich noch ein ArrayDisplay engefügt.

    Hier funktioniert alles perfekt:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <String.au3>
    $lyricurl = InetRead ("http://lyrics.wikia.com/Rammstein:Benzin")
    $lyricode = _StringBetween(BinaryToString($lyricurl),"alt='phone' width='16' height='17'/></a></div>","<!--")
    $lyricode = StringReplace($lyricode[0], "&#", "")
    $lyricode = StringReplace($lyricode, "<br />", "<br />;")
    $lyritext = StringSplit($lyricode, ";", 2)

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

    For $i = 0 To UBound($lyritext) - 1
    If $lyritext[$i] = "<br />" or $lyritext[$i] = "</i>" or $lyritext[$i] = "<i>" Then
    Else
    $lyritext[$i] = Chr($lyritext[$i])
    EndIf
    Next

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

    _ArrayDisplay($lyritext)
    $erg = _ArrayToString($lyritext, "")
    $erg = StringReplace($erg, "<br />", @CRLF)
    MsgBox(0, "", $erg)

    [/autoit]

    Hier aber werden zwar alle Daten richtig ins Array geladen. Allerdings nach _ArrayToString fehlt dann der größte Teil plötzlich in $erg:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <String.au3>
    $lyricurl = InetRead ("http://lyrics.wikia.com/E_Nomine:Mitternacht")
    $lyricode = _StringBetween(BinaryToString($lyricurl),"alt='phone' width='16' height='17'/></a></div>","<!--")
    $lyricode = StringReplace($lyricode[0], "&#", "")
    $lyricode = StringReplace($lyricode, "<br />", "<br />;")
    $lyritext = StringSplit($lyricode, ";", 2)

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

    For $i = 0 To UBound($lyritext) - 1
    If $lyritext[$i] = "<br />" or $lyritext[$i] = "</i>" or $lyritext[$i] = "<i>" Then
    Else
    $lyritext[$i] = Chr($lyritext[$i])
    EndIf
    Next

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

    _ArrayDisplay($lyritext)
    $erg = _ArrayToString($lyritext, "")
    $erg = StringReplace($erg, "<br />", @CRLF)
    MsgBox(0, "", $erg)

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (9. Oktober 2010 um 19:05)

  • mal ne blöde Frage:
    was ist der Unterschied zwischen den beiden Scripten.
    Ich komme mir vor wie beim Bilderrätsel--> such den Unterschied :rofl:

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • Die URL ganz oben. Zwei verschiedene Songtexte. Wobei wie gesagt beide richtig in den Array $lyritext geladen werden nur dann nach _ArrayToString beim zweiten Beispiel sehr viel vom Text der vorher noch in $lyritext stand fehlt.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Dein Script hat ein Problem mit dem <i> und dem </i>

    versuch mal so:
    ist aber eigentliuch suboptimal...

    [autoit]

    #include <Array.au3>
    #include <String.au3>
    $lyricurl = InetRead ("http://lyrics.wikia.com/E_Nomine:Mitternacht")
    ConsoleWrite('----------------------------------------------------------------------------------------------------------------' & @CRLF)

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

    $lyricode = _StringBetween(BinaryToString($lyricurl),"alt='phone' width='16' height='17'/></a></div>","<!--")

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

    $lyricode = StringReplace($lyricode[0], "<br />", "<br />;")
    $lyricode = StringReplace($lyricode, "<i>", "")
    $lyricode = StringReplace($lyricode, "</i>", "")
    $lyricode = StringReplace($lyricode, "&#", "")
    $lyritext = StringSplit($lyricode, ";", 2)

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

    For $i = 0 To UBound($lyritext) - 1
    If $lyritext[$i] = "<br />" or $lyritext[$i] = "</i>" or $lyritext[$i] = "<i>" Then
    Else
    $lyritext[$i] = Chr($lyritext[$i])
    EndIf
    Next

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

    _ArrayDisplay($lyritext)
    $erg = _ArrayToString($lyritext, "")
    $erg = StringReplace($erg, "<br />", @CRLF)
    MsgBox(0, "", $erg)

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...