在文件中搜索数组元素?

时间:2014-05-20 19:29:06

标签: ruby arrays

我有一个来自file.txt的数组。

我想遍历列表并检查myfile.txt中是否存在每个元素。如果元素存在,请转到下一个元素。如果它不存在,我想将它添加到未找到的数组。

我尝试使用此代码:

names = ["baba", "lily", "joe", "tsaki"]
names_not_found = []
for i in 0..names.length
 while line = file.gets
     puts if File.open('myfile.txt').lines.any?{|line| line.include?('names') << names_not_found}
    end
    end
    puts names_not_found
            end

我不确定我是否走在正确的轨道上。

2 个答案:

答案 0 :(得分:2)

我对其他2个答案感到有点困惑,因为我认为你想找到names中找不到myfile.txt数组的元素。我的答案会找到这些名字。其他解决方案查找的myfile.txt行不等于您的names个元素。肯定存在一些误解,所以如果这不是你想要的话我会道歉。

您可以将整个文件读取为一次String,只需使用.include?(您已经使用过)来查看其中提到的名称。请注意,这只是检查子字符串,因此如果文件包含"joey",它将“找到”"joe",因为它是其中的一部分。所以你可能想要使用带有单词边界的正则表达式,但我认为这有点超出范围。

names = ["baba", "lily", "joe", "tsaki"]
contents = File.read('myfile.txt')
names_not_found = names.reject { |name| contents.include? name }
# => ["baba"]

# contents of myfile.txt:
# hello lily
# joe
# tsaki!!
# panda

答案 1 :(得分:0)

我会这样做:

csv_class_names = File.readlines("css_file")
js_file_string = File.read('js_file')
names_not_found = csv_class_names.reject { |class| js_file_string.include?(class.chomp) }  
puts names_not_found