ruby将初始文件内容拆分为数组

时间:2016-08-03 19:05:12

标签: arrays ruby

我正在阅读的文件遵循以下格式:

12345,500,500
23456,100,150
34567,99,109

我要做的是读取文件的第一个逗号,然后将它们映射到数组中。

test = File.read('results.txt').split(',')[0]
p test 
 => "12345" 

会返回逗号之前的第一个值,但我想将它们全部放入数组

test = File.read('results.txt').split(',')[0].map(&:strip)

我已经尝试过以上和其他类似的排列,但遗憾的是它看起来不太正确。

我想要的结果是拥有以下

的数组
[12345,23456,34567]

2 个答案:

答案 0 :(得分:1)

以下是两种方法。首先创建文件。

txt =<<_
12345,500,500
23456,100,150
34567,99,109")
_

FName = "tmp"
File.write(FName, txt)
  #=> 43

<强>#1

File.foreach(FName).map { |line| line[0, line.index(',')] }
  #=> ["12345", "23456", "34567"]

<强>#2

File.foreach(FName).map { |line| line.to_i.to_s }
  #=> ["12345", "23456", "34567"]

IO#foreach逐行读取文件,与IO#readlines形成鲜明对比,&#34; gulps&#34;将整个文件转换为数组。因此,foreach对内存的要求低于readlines。您可以编写IO.foreach...File.foreach...,因为FileIOFile < IO #=> true)的子类。

答案 1 :(得分:0)

File.readlines('results.txt').map { |line| line.split(',') }.map(&:first)
=> ["12345", "23456", "34567"]