作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我是一名 Java/C++ 程序员,Ruby 是我的第一门脚本语言。有时我发现我在某些领域没有尽可能高效地使用它,例如:
目标:仅解析文件中的某些行。我要使用的模式是有一条非常大的线,尺寸大于 15,其余的肯定更小。我想忽略大行之前(包括)的所有行。
def do_something(str)
puts str
end
str =
'ignore me
me too!
LARGE LINE ahahahahha its a line!
target1
target2
target3'
flag1 = nil
str.each_line do |line|
do_something(line) if flag1
flag1 = 1 if line.size > 15
end
我写了这个,但我认为它可以写得更好,也就是说,一定有比设置标志更好的方法。也欢迎大家推荐如何写出漂亮的 Ruby 代码。
注意/澄清:我需要在大行首次出现后打印所有行。
最佳答案
str.lines.drop_while {|l| l.length < 15 }.drop(1).each {|l| do_something(l) }
我喜欢这个,因为如果你从左到右阅读它,它读起来几乎和你原来的描述一模一样:
将字符串分成多行并删除短于 15 个字符的行。然后放下另一行(即第一行超过 14 个字符)。然后对剩下的每一行做一些事情。
您甚至不需要一定了解 Ruby 或编程根本就能够验证这是否正确。
关于ruby - 快速建议 : How should this be written in Ruby?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2118549/
我是一名优秀的程序员,十分优秀!