【发布时间】:2014-05-09 12:53:20
【问题描述】:
我有一个应用程序从提要中获取以下格式的内容字符串
b="yesterday: 136.00, current: *143.00*, change: *+7.00*, change_2: *5.15%*, high: 143.00, low: 143.00"
Feed 可能会不定期返回此格式的日期 2014/08/15,而不是这样的数字
b="yesterday: 2014/12/02, current: *143.00*, change: *+7.00*, change_2: *5.15%*, high: 143.00, low: 143.00"
但是,此日期可能会在任何类别中返回,例如随机格式的“change_2: 2013/1/21”甚至“high: 2014/11/23”。
Feed 也可能返回逗号分隔值而不是小数,但实际上它应该是十进制值,例如
b="yesterday: 136,00, current: *143.00*, change: *+7.00*, change_2: *5,15%*, high: 143.00, low: 143.00"
Feed 还可能返回以下内容:
b="yesterday: 2014/02/12, current: *143,00*, change: *+7.00*, change_2: *5.15%*, high: 143.00, low: 143.00"
请注意,已返回日期和逗号分隔值,并且流返回此数据的顺序是完全随机的。
我如何检查以确保传入的数据的清洁度,以确保逗号中的值转换为小数点,例如23,12 到 23.13 和任何返回的日期都替换为值 0
此问题是同事发布的this 的变体
当我将日期作为第一个值时,aelor 的第一个答案返回以下内容:
b = ["yesterday: 0", "current: *143.00*", "change: *+7.00*", "change_2: *5.15%*", "high: 143.00", "low: 143.00"]
然后我就这么做了
c = b.split(". ")
d = c.map{ |x| x.scan(/[\d\.-]+/)[0] }.map(&:to_f)
但是 d 返回
[0.0, 143.0, 7.0, 2.0, 143.0, 143.0]
代替
[0.0, 143.0, 7.0, 5.15, 143.0, 143.0]
【问题讨论】: