给定一个字符串
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
]
那么计数器呢?repeat 的效率如何?
count-lines: func [string [string!]][
repeat count length? string [
unless string: find/tail string newline [
break/return count
]
]
]
更新: 行数按照文本编辑器的原则计算:
空白文档仍然有一行。因此:
>> count-lines ""
== 1
>> count-lines "^/"
== 2