我很确定我弄错了。但也许这样的事情呢?
file_names = ['phone_numbers.txt']
file_names.each do |file_name|
words_to_exclude = ["Employee Marked Urgency as: low", "Employee Marked Urgency as: high"]
text = File.read(file_name)
lines = text.split("\n")
new_contents = lines.uniq.reject do |word|
words_to_exclude.include? word
end.join("\n")
File.open(file_name, "w") { |file| file.puts new_contents }
end
答案 0 :(得分:1)
您可以通过换行符拆分它,在该列表上调用uniq
,然后在写入之前加入换行符。
file_names = ['phone_numbers.txt']
file_names.each do |file_name|
text = File.read(file_name)
lines = text.split("\n")
new_contents = lines.uniq.join("\n")
File.open(file_name, "w") { |file| file.puts new_contents }
end
请注意,您不应使用|file_names|
,因为它不准确。该变量引用单个文件名(循环中的当前文件名)。所以我将其更改为file_name
。
要关注您的问题,如果您想使用除唯一性之外的某个指标过滤使用中的字词,则可以使用Enumerable#select或Enumerable#reject。例如:
words_to_exclude = ["foo", "bar"]
new_contents = lines.uniq.reject do |word|
words_to_exclude.include? word
end.join("\n")