我无法加入数据,其中数组元素中的一个数据与下一个元素相关。这是基本的字符串。
课程= [“星期二2015年10月6日\ n8:00am \ n美国历史9上午工作时间上午10点\ n现代电影11:00 am'nGeometry 1 pm \ n English 2:00 pm'nPhysical Education 3 pm'nArt”,“”,“ “]
我将字符串拆分为基于换行符的数组,这使得它可读。
classes = events.split(“\ n”)
班级= [“2015年10月6日星期二”,“上午8:00”,“美国历史上午9点”,“AP工程10日上午”,“现代电影上午11:00”,“几何下午1点”,“英语2:00 pm” ,“体育教育下午3点”,“艺术”,“”,“”]
问题是,在第一次(上午8:00)之后,所有后续时间是除最后一个元素之外的每个元素中的最后一个“单词”。我猜错了网页设计。
我正在尝试组装的正确输出是:
2015年10月6日星期二 美国历史上午8:00 上午9点AP工程 上午10点现代电影 上午11:00几何 下午1点英语 下午2:00体育 下午3点艺术
这是我在代码中的运行。
my_array = classes.drop(2)
date = classes.first
time1 = classes[1][0...6]
class1 = classes[2][0...55]
class1_trim = class1[/(.*)\s/,1]
p date
p "#{time1} #{class1_trim}"
x = my_array.length
y = x-1
(0..y).each do |k|
class_k = my_array[k][0...55]
class_k_trim = class_k[/(.*)\s/,1]
time_k = my_array[k][0...55].split(/\s+/).last
if k < y
p "#{time_k} #{class_k_trim}"
else
p "#{time_k} #{class_k}" #no need for trim on last element
end
end
问题是,时间和课程不同步,因为它们从不同的元素开始。
我需要使用my_array的第二个元素中的时间,并使用第三个元素中的类连接。然后,第三个元素的时间是第四个元素的开始时间,依此类推。
任何人都可以帮我这么做吗?
答案 0 :(得分:1)
对我来说,你不需要进行拆分:
classes.first.tr(?\n, " ")
=> "Tue Oct 6, 2015 8:00am American History 9am AP Engineering10am Modern Film 11:00am Geometry 1pm English 2:00pm Physical Education 3pm Art"
在10之前没有空间。这是一个错字吗?
编辑:
classes.first.split(?\n).each_cons(2).to_a
=> [["Tue Oct 6, 2015", "8:00am"], ["8:00am", "American History 9am"], ["American History 9am", "AP Engineering 10am"], ["AP Engineering 10am", "Modern Film 11:00am"], ["Modern Film 11:00am", "Geometry 1pm"], ["Geometry 1pm", " English 2:00pm"], [" English 2:00pm", "Physical Education 3pm"], ["Physical Education 3pm", "Art"]]
应该让你到那儿。你必须将第一个和最后一个元素视为特殊情况。