从文件读入数组,如果在ruby中找到":"则停止

Min*_*nky 4 ruby arrays

我如何在Ruby中将一个字符串从一个文件读入一个数组,只读取并保存在数组中,直到我得到某个标记,如":"并停止读取?

任何帮助将不胜感激=)

例如:

10.199.198.10:111  test/testing/testing  (EST-08532522)
10.199.198.12:111  test/testing/testing  (EST-08532522)
10.199.198.13:111  test/testing/testing  (EST-08532522)
Run Code Online (Sandbox Code Playgroud)

应该只读取以下内容并包含在数组中:

10.199.198.10
10.199.198.12
10.199.198.13
Run Code Online (Sandbox Code Playgroud)

Mar*_*off 13

这是一个相当微不足道的问题,使用String#split:

results = open('a.txt').map { |line| line.split(':')[0] }

p results
Run Code Online (Sandbox Code Playgroud)

输出:

["10.199.198.10", "10.199.198.12", "10.199.198.13"]
Run Code Online (Sandbox Code Playgroud)

String#split在指定的分隔符处中断字符串并返回一个数组; 所以line.split(':')[0]获取该生成的数组的第一个元素.

如果有一条没有a的行:,String#split将返回一个包含整个行的单个元素的数组.因此,如果您需要进行更多错误检查,您可以编写如下内容:

results = []

open('a.txt').each do |line|
  results << line.split(':')[0] if line.include? ':'
end

p results
Run Code Online (Sandbox Code Playgroud)

如果行中有一个:字符,它只会将分割线添加到结果数组中.