新手问题 新手请教一个简单的 ruby 问题——字符串输出某列

yhl3692319 · 2015年05月15日 · 最后由 bluexuemei 回复于 2015年05月16日 · 1809 次阅读

如有这么一个字符串

rs ="
        Interface                 PHY      Protocol  InUti  OutUti   inErrors  outErrors                                                    
        10GE1/0/1                  up       up        99.0% 99.0%                1          2                                                    
        10GE1/0/2                  up(l)    up           0%     0%                   0          0                                                    
        10GE1/0/3                  up(l)    up           0%     0%                  3          0                                                    
        10GE1/0/4                  up(l)    up        0.03%     0%                0          4"

我要提取出 inErrors 和 outErrors 这两列的数据 并放入数组中 [["1", "2"], ["0", "0"], ["3", "0"], ["0", "4"]]

我要怎么做 找不到 each_list。。。。。。

each_line 吧。

rs.split("\n").select(&:presence).collect{|r| [r.split(" ")[5],r.split(" ")[6]]}
rs.scan(/\s(\d+)\s(\d+)$/)

#3 楼 @lululau 好厉害啊,可是看不懂啊

#2 楼 @cysh presence 是什么

require 'csv'
_, *rows = CSV.parse rs.strip, col_sep: ' '
rows.map {|r| r.values_at 5, 6 }

#5 楼 @yhl3692319 presence 是 rails 的方法,对象不存在则返回 nil #3 楼 @lululau 学习了

#3 楼 @lululau rs.scan(/\s(\d+)\s+(\d+)\s*$/)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号