如何在Ruby中逐行读取数据?

时间:2015-07-17 00:15:11

标签: ruby file-io io

我是Ruby的新手,正在创建一个扑克游戏应用程序。我试图从文本文件中读取每个玩家的牌。文本文件中的数据如下所示:

8C TS KC 9H 4S 7D 2S 5D 3S AC
5C AD 5D AC 9C 7C 5H 8D TD KS
3H 7H 6S KC JS QH TD JC 2D 8S

等等。每一行的前5个是一个玩家的牌,另外5个是另一个玩家的牌。我将如何阅读这些数据?我已经编写了一个Card类,可以根据它们在文件中的表示方式创建卡片。

1 个答案:

答案 0 :(得分:2)

IO.foreach('cards.txt') do |line|
  cards = line.chomp.split.map { |c| Card.new(c) }
  hand1 = cards[0, 5]
  hand2 = cards[5, 5]
  #...
end

...或

handpairs = File.open('cards.txt') do |f|
  f.each_line.map { |line|
    line.chomp.split.each_slice(5).map { |cs|
      cs.map { |c| Card.new(c) }
    }
  }
end