如何通过Ruby修改这种文件

时间:2017-07-06 20:06:07

标签: ruby algorithm

我有一个类似的文件:

Fruit.Store={
    #order:123, order:345, order:456
    #order:789
    "customer-id:12345,item:store/apple" = 10;    
    "customer-id:23456,item:store/banana" = 10;   
    "customer-id:23456,item:store/watermelon" = 10;
    #order:987
    "customer-id:67890,item:store/pear" = 10;
}

除了评论之外,每一行都具有相同的格式:customer-id和item:store /是固定的,customer-id是一个5位数字。文件中大约有1000个唯一行。

当基于相同的客户ID和不同数量的水果类型放置新订单时,我希望在上面的注释行中添加订单ID并更新数量,就像新订单001放置了信息& #34;顾客-ID:23456,产品编号:存储/西瓜" = 5;我们应该有一个新文件:

Fruit.Store={
    #order:123, order:345, order:456
    #order:789, order:000
    "customer-id:12345,item:store/apple" = 10;    
    "customer-id:23456,item:store/banana" = 10;   
    "customer-id:23456,item:store/watermelon" = 5;
    #order:987
    "customer-id:67890,item:store/pear" = 10;
}

是否有可能以有效的方式这样做?因为必须逐行读取和写入文件,我们如何检测匹配的信息并返回上一行进行修改?谢谢。

1 个答案:

答案 0 :(得分:0)

简而言之:不,不可能以有效的方式实现最好的办法是打开单独的文件进行阅读和写作,但即便如此,你也要有效地一遍又一遍地重写整个文件。

最终,你应该使用某种参考数据库,比如SQL。这些数据库实际上是针对这个确切的用例而发明的。

我真的不想告诉别人,唯一的解决方案就是做一些与他们正在做的事情完全不同的事情,但在这种情况下,我不能强调文本文件的缩放程度用于管理数据。