Zeilenumbruch löschen

  • Hallo,

    ich habe einen Text in der Zwischenablage! (html)
    Dieser Text enthält Zeilenumbrüche.

    Diese möchte ich gerne entfernen, das klappt aber nicht!

    [autoit]


    $sSource=ClipGet()
    $sSource = StringReplace($sSource, @CRLF, '')

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

    MsgBox(0,"",$sSource)

    [/autoit]

    Scite zeigt CRLF als Umbruch an.

    Beispiel

    Spoiler anzeigen


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <meta name="verify-v1" content="GE+G96G18P1lELskVZXPiOCsBOaG5ocFtNxZ+qhFJd0=" />
    <title>Hunde und Hunderassen, Hundezüchter und Welpen auf hunde.de</title>

    Grüße
    Ilse ;)

    2 Mal editiert, zuletzt von Ilse (26. Juli 2011 um 18:32)

  • Hallo,

    das geht leider auch nicht

    [autoit]


    $sSource=ClipGet()
    ;$sSource = StringStripCR($sSource, Chr(13),"")
    $result = StringStripCR($sSource & Chr(13) & Chr(10))
    MsgBox(0, "String ohne CR Zeichen:", $result)

    [/autoit]
  • @Aspirin Junkie

    habe das Hilfebeispiel probiert! Chr(13) und Chr(10)
    @CRLF...komme nicht ans Ziel!

    Spoiler anzeigen
    [autoit]


    $sSource=ClipGet()
    $sSource = StringStripCR($sSource, Chr(13),"")
    MsgBox(0, "String ohne CR Zeichen:", $result)

    [/autoit]

    Hier ein Beispiel des Quellcodes

    Spoiler anzeigen


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <meta name="verify-v1" content="GE+G96G18P1lELskVZXPiOCsBOaG5ocFtNxZ+qhFJd0=" />
    <title>Hunde und Hunderassen, Hundezüchter und Welpen auf hunde.de</title>

    Es sollte also alles in einer einzigen Zeile stehen!

    Zum testen einfach mal diesen Quellcode in die Zwischenablage
    und Code starten!

    Grüße
    Ilse ;)

  • Hallo Ilse,

    hier eine kleine Func die alle Steuerzeichen aus einem String entfernt

    [autoit]

    $sTest = "Dies ist ein Teststring " & @CR & "mit Zeilentrennern und" & @TAB & " anderen Steuerzeichen" & @CRLF & " noch eine Zeile"

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

    MsgBox(0, "Teststring: ", _StripAllSpecialChars($sTest))

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

    Func _StripAllSpecialChars($sText)
    For $i = 0 To 31 ;9 to 13 sind die wichtigsten
    If StringInStr($sText, Chr($i)) Then $sText = StringReplace($sText, Chr($i), "")
    Next
    Return $sText
    EndFunc ;==>_StripAllSpecialChars

    [/autoit]

    mfg autoBert

  • Warum ignorierst du meine 1. Frage?!?
    Eine einfache Antwort ja oder nein - ist sowas möglich?

    Wenn du ganz sicher gehen willst geht auch folgendes:

    [autoit]

    $s_Source = BinaryToString(InetRead("http://www.hunde.de/"))
    ConsoleWrite(StringReplace(StringStripCR($s_Source), @LF, ""))

    [/autoit]

    Und dennoch geh ich stark davon aus das wir diese Zeilenumbruchgeschichte schnell ignorieren könnten wenn du uns gleich sagen würdest was du vorhast und was am Ende rauskommen soll.
    Lass mich einfach mal raten: Du arbeitest mit StringRegExp() und der Parameter "(?s)" ist dir nicht bekannt?

  • Hallo Autobert,

    bitte schau nochmal drüber,
    es passiert nichts!

    Meine Zwischenablage

    Spoiler anzeigen


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <meta name="verify-v1" content="GE+G96G18P1lELskVZXPiOCsBOaG5ocFtNxZ+qhFJd0=" />
    <title>Hunde und Hunderassen, Hundezüchter und Welpen auf hunde.de</title>

    [autoit]


    Global $sText
    $sTest = ClipGet()
    MsgBox(0, "Normal", $sTest)
    _StripAllSpecialChars($sText)

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

    MsgBox(0, "Bearbeitet", $sTest)
    ClipPut($sTest)

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

    Func _StripAllSpecialChars($sText)
    For $i = 0 To 31 ;9 to 13 sind die wichtigsten
    If StringInStr($sText, Chr($i)) Then $sText = StringReplace($sText, Chr($i), "")
    Next
    Return $sText
    EndFunc ;==>_StripAllSpecialChars

    [/autoit]
  • ...klappt jetzt

    @Aspirin Junkie

    Zitat


    Warum ignorierst du meine 1. Frage?!?

    hatte ich wohl falsch verstanden, nicht böse sein!

    Danke nochmal

    Liebe Grüße
    Ilse ;)

  • Hallo :)

    ja, ich weiss, ich bin sehr viel später dran, aber ich hatte das Problem auch grad und hab´ ´ne schnelle Lösung gefunden die eventuell jemanden interessiert.
    Wenn man die Steuerzeichen mit StringReplace() einzeln entfernt geht es schnell und simpel.

    [autoit]


    #include <String.au3>

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

    ;IrgendeinText...
    $sText = "Blah blah" & @CRLF & _
    "SQUAD," & @CRLF & _
    "NAME_RIFLE_formation)," & @CRLF & _
    "blah blah"

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

    $sText = StringReplace($sText, @CR, "") ;CR out
    $sText = StringReplace($sText, @LF, "") ;LF out

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

    ConsoleWrite($sText & @CRLF)

    [/autoit]

    Gruß, Tombac

  • Und so doch um eine Zeile weniger: ;)

    Spoiler anzeigen
    [autoit]


    #include <String.au3>
    ;IrgendeinText...
    $sText = "Blah blah" & @CRLF & _
    "SQUAD," & @CRLF & _
    "NAME_RIFLE_formation)," & @CRLF & _
    "blah blah"
    $sText = StringReplace($sText, @CRLF, "") ;CR & LF out
    ConsoleWrite($sText & @CRLF)

    [/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Alina, :)

    genau so wie du schreibst, habe ich es erst auch versucht.
    Ich habe hier HTML-Text über die FF.au3 per _FFReadHTML() aus kompletten Webseitenquellcode für automatische Tests ausgewertet und festgestellt, das es mit der Zeichenkombination @CRLF komischerweise nicht immer funktionierte die Steuerzeichen zu entfernen. Einzeln ging es problemlos.
    Sehen wir es einfach als mögliche Alternative, falls @CRLF allein nicht funktioniert... :)

    Gruß, Tombac

  • Wenn man die Steuerzeichen mit StringReplace() einzeln entfernt geht es schnell und simpel.

    Und wenn man für die Entfernung von @CR statt StringReplace() ein StringStripCR() verwendet geht es, wie hier bereits vor 3 Jahren beschrieben, noch schneller und noch simpler.

    Wirklich flott wird es aber erst wenn man StringReplace Case-sensitive betreibt:

    [autoit]

    $sText = StringReplace(StringStripCR($sText), @LF, "",0,1)

    [/autoit]

    2 Mal editiert, zuletzt von AspirinJunkie (2. Dezember 2014 um 09:46)

  • Hallo AspirinJunkie, :)

    Das funktioniert, so wie Du es schreibst, nicht hier auf dieser Installation:

    [autoit]


    #include <String.au3>
    ;IrgendeinText...
    $sText = "Blah blah" & @CRLF & _
    "SQUAD," & @CRLF & _
    "NAME_RIFLE_formation)," & @CRLF & _
    "blah blah"

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

    $sText= StringStripCR($sText)

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

    ConsoleWrite($sText & @CRLF)

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

    MsgBox(64 ,"sText:",$sText)

    [/autoit]

    die CRLF im $sText werden trotzdem angezeigt... (Was mache ich eventuell falsch?)

    Gruß, Tombac

  • Sieht für mich alles nach "Jacke wie Hose" aus :) - Naja, man müsste, wenn man evtl. Lust dazu bekommt, mal die Zeit stoppen bei der Ausführung der verschiedenen Möglichkeiten... mal sehn...

  • Nichts leichter als das:

    Zeitvergleich
    [autoit]

    Global $N = 100000

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

    Global $sText = "Blah blah" & @CRLF & _
    "SQUAD," & @CRLF & _
    "NAME_RIFLE_formation)," & @CRLF & _
    "blah blah"

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

    $iT = TimerInit()
    For $i = 1 To $N
    $x = StringReplace($sText, @CR, "")
    $x = StringReplace($x, @LF, "")
    Next
    $iT = TimerDiff($iT)
    ConsoleWrite(StringFormat("%30s: %7.5f ms\n", "StringReplace", $iT / $N))

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

    $iT = TimerInit()
    For $i = 1 To $N
    $x = StringReplace(StringStripCR($sText), @LF, "",0,1)
    Next
    $iT = TimerDiff($iT)
    ConsoleWrite(StringFormat("%30s: %7.5f ms\n", "StringStripCR + Case-Sensitive", $iT / $N))

    [/autoit]
  • Hallo, :)

    ja das ergibt bei der Analyse von recht langen Strings sicher so einiges an Beschleunigung ... :thumbup:
    Diese Lösung gefällt mir besser als meine und ich werd´ sie verwenden.
    Vielen Dank für die Anregungen und den Speedtest :) ...

    Gruß, Tombac