我有一个名为text.txt的文本文件,其存储文本如此
713,袜子,3.99
888,帽子,12.99
634,衬衫,7.99
我想打开我的文件并选择一个项目编号,然后我想更新说明和价格。并将其保存回文件。
到目前为止我的代码
puts "Whats's the item number of the product you wish to update?"
item_num = gets.chomp
puts 'Enter new products description. '
new_description = gets.chomp
puts 'Enter new products price. '
new_price = gets.chomp.to_s
open('text.txt', 'r+') { |update|
update.puts "#{item_num},#{new_description},#{new_price}"
}
end
所有这一切都是添加具有相同项目编号的新产品。
答案 0 :(得分:0)
实现目标的最简单方法是使用CSV
类来操作文件内容。毕竟,内容是 csv,对吧?
所以,而不是:
open('text.txt', 'r+') { |update|
update.puts "#{item_num},#{new_description},#{new_price}"
}
你可能想在已加载数组中搜索一个元素,更新它然后将内容写回文件:
require 'csv'
items = CSV.read("text.txt")
items.map! { |i|
next i unless i.first == item_num # skip unless it’s our item
i[1] = new_description
i[2] = new_price
i
}
# here should go the code whether you need to insert line if `num` is not found
CSV.open("text.txt", "wb") do |csv|
items.each { |i| csv << i }
end
这绝对不是最好的生产质量代码,目的是要证明它是如何完成的。希望它有所帮助。