我正在阅读的文件遵循以下格式:
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]
答案 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...
,因为File
是IO
(File < IO #=> true
)的子类。
答案 1 :(得分:0)
File.readlines('results.txt').map { |line| line.split(',') }.map(&:first)
=> ["12345", "23456", "34567"]