Was ist der schnellste / effizienteste Weg, um Zeilen in Rebol zu zählen?
Gegeben eine Zeichenfolgestring
Was ist der schnellste / effizienteste Weg, um Zeilen darin zu zählen? Akzeptiert die besten Antworten für jeden Rebol-Geschmack. Ich habe unter der Annahme gearbeitet, dass dieparse [some [thru]]
Kombination war der schnellste Weg, um eine Zeichenfolge zu durchlaufen, aber dann weiß ich das nicht mit Sicherheit, daher wenden wir uns SO zu:
count-lines: func [string [string!] /local count][
parse/all string [
(count: 1) some [thru newline (count: count + 1)]
]
count
]
Oder:
count-lines: func [string [string!] /local count][
count: 0
until [
count: count + 1
not string: find/tail string newline
]
count
]
Und wie wäre es mit Schaltern? Wie effizient ist die Wiederholung?
count-lines: func [string [string!]][
repeat count length? string [
unless string: find/tail string newline [
break/return count
]
]
]
Aktualisieren: Die Zeilenzählung erfolgt nach dem Prinzip des Texteditors:
Ein leeres Dokument hat immer noch eine Zeilenzahl von eins. So:
>> count-lines ""
== 1
>> count-lines "^/"
== 2