从文件中读取并更新

时间:2015-03-04 04:41:13

标签: ruby

我有一个名为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

所有这一切都是添加具有相同项目编号的新产品。

1 个答案:

答案 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

这绝对不是最好的生产质量代码,目的是要证明它是如何完成的。希望它有所帮助。