ruby - 从文件读入数组并在 ruby​​ 中找到 ":"时停止

标签 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)

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

10.199.198.10
10.199.198.12
10.199.198.13

最佳答案

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

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

p results

输出:

["10.199.198.10", "10.199.198.12", "10.199.198.13"]

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

如果某行中没有 :String#split 将返回一个数组,其中只有一个元素是整行。所以如果你需要做更多的错误检查,你可以这样写:

results = []

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

p results

如果行中有 : 字符,它只会将拆分行添加到结果数组。

关于ruby - 从文件读入数组并在 ruby​​ 中找到 ":"时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697968/

相关文章:

ruby - 如何避免过度测试私有(private)方法的行为?

ruby - Ruby 的 256 色终端库?

javascript - 如何将当前i的for循环值添加到 react 功能组件中的空数组状态中?

arrays - Bash:无法在管道右侧构建数组

arrays - 使用数组元素作为需要字符串的类的输入

ruby - 如何在Ruby 2.7.0上安装Nokogiri

ruby-on-rails - 调用数据库函数更新用户详细信息

ruby-on-rails - Encoding::CompatibilityError(不兼容的字符编码:UTF-8 和 ASCII-8BIT)- 将文件上传到 Heroku 时

java - 如何生成指定范围的 11 位序列号?

c - 我如何在 C 中通过 malloc 分配一个指针数组和一个二维数组?