string が与えられた場合、string
その中の行を数える最速/最も効率的な方法は何ですか? Rebol のどのフレーバーについてもベストアンサーを受け入れます。私は、parse [some [thru]]
組み合わせが文字列をトラバースする最速の方法であるという仮定の下で作業してきましたが、確かにそれがわからないため、SOに目を向けます:
count-lines: func [string [string!] /local count][
parse/all string [
(count: 1) some [thru newline (count: count + 1)]
]
count
]
または:
count-lines: func [string [string!] /local count][
count: 0
until [
count: count + 1
not string: find/tail string newline
]
count
]
そして、カウンターはどうですか?繰り返しはどのくらい効率的ですか?
count-lines: func [string [string!]][
repeat count length? string [
unless string: find/tail string newline [
break/return count
]
]
]
更新:行数はテキスト エディターの原則に従います:
空のドキュメントの行数は 1 のままです。そう:
>> count-lines ""
== 1
>> count-lines "^/"
== 2