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

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • 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

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)