在输入行中查找产品类型

时间:2012-10-27 12:48:31

标签: ruby regex match

以下是我想要解决的问题。我将说明我是如何做到这一点的,我正在寻找一种方法不那么复杂(和更清洁:P)。

给出这样的输入:

第一次输入

1 soccer ball costs 30 
1 piano costs 500
1 guitars costs 200

第二次输入

1 luxury bottle of whiskey costs 10.20
1 package of luxury caviar costs 53

我想计算每一行的最终价格和每个输入的最终价格。为了计算每一行的最终价格,我考虑到了:

  • 如果处理的项目与体育有关,我想添加2(因此第一行将是32)。如果它是音乐项目,我想添加4(所以第二行将是504)。
  • 如果处理的项目与食品有关,我想添加5(因此第二个输入的两行将增加5)。
  • 如果处理的项目是奢侈品,我想添加10。

我在一件事上遇到麻烦:

  • 识别并映射哪种项目位于特定行中。

使用正则表达式我能够找到该项应该是该项的部分:

soccer ball
piano
guitars
bottle of whisky
package of caviar

我知道这可能是一个非常多面的问题,但我想知道什么是找到每件物品的好方法。

现在我有这样的结构:

{"soccer" => "sports", "piano" => "music", "guitars" => "music", "whisky" => "food", "caviar" => "food"}

然后我尝试将哈希的任何键与特定行中的项匹配。你能想到更好的方法,API或任何会降低这种复杂性的方法吗?

1 个答案:

答案 0 :(得分:0)

您的层次结构倒置了。数组中的每个键都应该是一个类别,值应该是属于该类别的所有项的数组。

{"sports"=> ["soccer"], "music" => ["guitars", "piano"], "food" => ["caviar","whisky"]}