我有一些Ruby代码,它以格式在命令行上显示日期:
-d 20080101,20080201..20080229,20080301
这意味着我要为出现在列表中的其他日期20080201和20080229(含)之间的所有日期和运行.
鉴于我能得到的字符串20080201..20080229什么是将此转换为范围的情况下的最佳途径.目前我正在使用eval,但感觉应该有更好的方法.
@Purfideas我是种寻找一种更普遍的答案类型int..int的任何字符串转换为一个范围,我猜.
Pur*_*eas 14
但那就是做
ends = '20080201..20080229'.split('..').map{|d| Integer(d)}
ends[0]..ends[1]
Run Code Online (Sandbox Code Playgroud)
无论如何,出于安全考虑,我不建议使用eval
没有args的注入适用于两个元素数组:
rng='20080201..20080229'.split('..').inject { |s,e| s.to_i..e.to_i }
Run Code Online (Sandbox Code Playgroud)
当然,这可以是通用的
class Range
def self.from_ary(a)
a.inject{|s,e| s..e }
end
end
rng = Range.from_ary('20080201..20080229'.split('..').map{|s| s.to_i})
rng.class # => Range
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11688 次 |
最近记录: |