我有一个来自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
我不确定我是否走在正确的轨道上。
答案 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