Mit einer Zeichenfolge string
, was ist der schnellste / effizienteste Weg Zeilen darin zu zählen? Wird die besten Antworten für jeden Geschmack von Rebol akzeptieren. Ich habe unter der Annahme gearbeitet, dass die parse [some [thru]]
-Kombination der schnellste Weg ist, um eine Saite zu durchlaufen, aber dann weiß ich das nicht sicher und wende mich daher an SO:
Oder:
%Vor%Und was ist mit Zählern? Wie effizient ist die Wiederholung?
%Vor%Update: Zeilenzählung geht nach dem Text-Editor-Prinzip:
Ein leeres Dokument hat immer noch eine Zeilenanzahl von eins. Also:
%Vor% Hier ist die beste einfache nicht parse
Version, die ich mir vorstellen kann:
Es verwendet function
und ++
von neueren Versionen von Rebol und find-all
von entweder R3 oder R2 / Forward. Du könntest dir die Quelle von find-all
und inline ansehen, was du findest und optimierst, aber Situationen wie diese sind genau das, für das wir find-all
geschrieben haben, also warum nicht benutzen?
Warum niemand mit der einfachsten Lösung kam, frage ich mich:)
%Vor%Ich bin mir nicht sicher über die Leistung, aber ich denke, es ist ziemlich schnell, da UNTIL und FIND Eingeborene sind. WHILE könnte auch verwendet werden.
%Vor%Sie müssen nur nach einem leeren String suchen. Und wenn es eine Funktion wäre, muss die Argument-Reihe HEADed sein.
hehehe die Lese- / Zeilenlänge? Temp ist eine großartige Sache, die ich über lesen / Zeilen - & gt; foreach Linien temps [Anzahl: Anzahl + 1]
Eine andere Möglichkeit wäre
%Vor%Ich mag es in Rebol zu codieren, es ist so lustig
Bearbeiten Ich habe den ganzen Beitrag nicht gelesen, daher wurde meine Lösung bereits anders vorgeschlagen ...
OK, um für meine Sünde des Postens einer bereits veröffentlichten Lösung zu verbessern, werde ich einen Einblickkommentar über ein unerwartetes Verhalten dieser Lösung bringen. Mehrere verkettete Wagenrückläufe werden nicht gezählt (mit Hilfe von rebol3 linux ...)
%Vor%Tags und Links string performance newline rebol