如果我有一个字符串,例如string = "08/01/2012"
如何在 Ruby 中一行返回“2012-08-01”?
例如,取最后一个“/”之后的一组数字,将它们插入到开头,然后将“/”替换为“-”
由于您正在处理日期,因此我将浏览Date
库(您必须require 'date'
使用某些功能),因为它是最灵活和最稳定的方法:
Date.strptime(string, '%m/%d/%Y').strftime('%Y-%m-%d')
#=> "2012-08-01"
如您所见,strptime
("string parse time") 和strftime
("string format time") 都采用了准确描述它们正在做什么的格式字符串。
如果你不想通过Date
,你可以gsub
这样使用:
string.gsub(%r{(\d+)/(\d+)/(\d+)}, '\3-\1-\2')
#=> "2012-08-01"
迈克尔科尔的答案是正确的
只是另一个答案
Date.parse(string).strftime('%Y-%d-%m')
m, d, y = string.split("/")
"#{y}-#{m}-#{d}"
或者
string.split("/").rotate(-1).join("-")
month, day, year = string.split('/').map(&:to_i)
rearranged = sprintf "%04d-%02d-%02d", year, month, day
它做了一些额外的工作(因为它对to_i
每个元素都做了),但以后可能会派上用场。
我觉得更简单:
'30/10/2016'.split('/').reverse().join('-')