我正在尝试减少以下 if/else 语句...
event_description = "We have a record of item FJ750701138GB as being delivered from Northampton North DO on 2013-08-10."
time = Time.now.strftime("%H:%M")
if date = event_description.scan(/We have a record of item [^>]* as being delivered from [^>]* on ([^<]*)./i).join
datetime = Date.strptime("#{date} #{time}","%Y-%m-%d %H:%M").to_time
elsif date = event_description.scan(/Your item with reference [^>]* was delivered from our [^>]* Delivery Office on ([^<]*) ./i).join
datetime = Date.strptime("#{date} #{time}","%d/%m/%y %H:%M").to_time
elsif date = event_description.scan(/Item [^>]* was collected and signed for by the addressee on the ([^<]*) from [^>]*/i).join
datetime = Date.strptime("#{date} #{time}","%Y-%m-%d %H:%M").to_time
elsif date = event_description.scan(/Your item, posted on [^>]* with reference [^>]* was delivered in [^>]* on ([^<]*)./i).join
datetime = Date.strptime("#{date} #{time}","%d/%m/%y %H:%M").to_time
end
event.occurred_at = datetime
它的主要功能是扫描各种字符串,从中提取日期,并创建一个 Date 对象。
- 日期可以采用不同的格式(如您在
striptime
实例中所见) - 随着时间的推移,当我们扩展我们正在扫描的字符串时,我们将添加更多
elsif
语句,因此希望将其压缩一点,使其不那么庞大。
有相当数量的代码重复,所以试图弄清楚如何重构它。