我有一个从csv导入的字符串,例如:
2009年8月14日:2009年8月15日,1日,2015年9月16日:1 | Style1,Septh Sep 2015:1 | Style 1
我希望以特定方式将此数据添加到我的数据库中。首先,我将其拆分为,
以获取每个日期组(在本例中为4个日期)。
其次,我想要一种方法将每个日期组分成多个部分。第一个是日期,第二个是冒号之后的数字,然后是由|
字符分隔的每个项目的更多数量。
在Ruby中有没有一种可行的有效方法来实现这一目标?
寻找像这样的哈希的结果:
{ '14th Aug 2009' => 1, '15th Aug 2009' => 1, '16th Aug 2009' => 1, '16th Sep 2015' => { 1 => 'Style 1' }, '17th Sep 2015' => { 1 => 'Style 1' }
基本上如果字符串是这样的话:
2009年8月15日:2015年9月16日:3 | Style1 | Style 1,17th Sep 2015:1 | Style 1
我会得到
{ '15th Aug 2009' => 1, '16th Sep 2015' => { '', 'Style 1', 'Style 1' }, '17th Sep 2015' => { 1 => 'Style 1' }
基本上,由|
分隔的文本应该分配给冒号后面的数字。如果数字是3并且后面有两组文本,则一个是空字符串,另外两个将说明文本(例如:“Style 1”。
很抱歉听起来很混乱。
答案 0 :(得分:1)
我假设你的意思是' |'正如注入要求的那样,separted items来构建一个Array。怎么样?
s ="15th Aug 2009:1, 16th Sep 2015:3|Style1|Style 1, 17th Sep 2015:1|Style 1"
result = {}
s.split(',').each do |v|
date,rest = v.split(':')
items = rest.split('|')
if items[0] == "1"
result[date] = 1
else
result[date] = ['', items[1..-1]]
end
end