Ruby 使用正则表达式将12小时时间转换为24小时时间
我有一组字符串,以这种格式显示开放时间:Ruby 使用正则表达式将12小时时间转换为24小时时间,ruby,regex,string,time,Ruby,Regex,String,Time,我有一组字符串,以这种格式显示开放时间: Mon-Fri: AM7:00-PM8:00\nSat-Sun: AM8:00-PM6:00 我可以通过移除“AM”部分来处理它,但是我想通过 删除“PM” 将12添加到“:”之前的数字 注意PM有时为两位数(例如PM11:00) 字符串中可以有零个或多个PM时间 我不知道如何把时间作为一个数字来处理。我已经走了这么远: opening_hours.sub! /PM([\d]?[\d]):/, "***\1***" 输出如下内容: AM7:15-
Mon-Fri: AM7:00-PM8:00\nSat-Sun: AM8:00-PM6:00
我可以通过移除“AM”部分来处理它,但是我想通过
- 删除“PM”
- 将12添加到“:”之前的数字
- 注意PM有时为两位数(例如PM11:00)
opening_hours.sub! /PM([\d]?[\d]):/, "***\1***"
输出如下内容:
AM7:15-***\u0001***00
“\u0001”可能是由于字符串中的日文字符造成的。您可以利用
string#gsub
接受块这一事实。像这样的东西对你合适吗
s = "Mon-Fri: AM7:00-PM8:00\nSat-Sun: AM8:00-PM11:00"
s2 = s.gsub('AM', '').gsub(/PM(\d+)/) do |match|
(match.gsub('PM', '').to_i + 12).to_s
end
s2 # => "Mon-Fri: 7:00-20:00\nSat-Sun: 8:00-23:00"
看看这个问题,ruby有一个叫做datatime的类
这不能单独使用正则表达式。您只能使用regex进行匹配,并提供替换功能以根据匹配的文本进行替换。那么
AM12:00
和PM12:00
呢?非常好,这非常有效,谢谢@maerics至少在我的情况下,AM12:00可以保持原样,没有PM12:00,只有一个PM0:00(我会手工完成)