拆分,重新排列和连接字符串

时间:2012-08-11 10:59:48

标签: ruby regex

如果我有一个字符串,例如string = "08/01/2012"

如何在Ruby中将“2012-08-01”返回到一行?

e.g。取最后一个“/”后面的数字,在开头插入,然后用“ - ”s替换“/”s

5 个答案:

答案 0 :(得分:3)

由于您正在处理日期,我会浏览Date库(您必须require 'date'获取某些功能),因为这是最灵活和最稳定的方法:

Date.strptime(string, '%m/%d/%Y').strftime('%Y-%m-%d')
#=> "2012-08-01"

正如你可以看到strptime(“字符串解析时间”)和strftime(“字符串格式时间”)一样,采用准确描述他们正在做什么的格式字符串。

如果您不想浏览Date,可以像这样使用gsub

string.gsub(%r{(\d+)/(\d+)/(\d+)}, '\3-\1-\2')
#=> "2012-08-01"

答案 1 :(得分:1)

m, d, y = string.split("/")
"#{y}-#{m}-#{d}"

string.split("/").rotate(-1).join("-")

答案 2 :(得分:1)

Michael Kohl回答是正确的

只是另一个答案

Date.parse(string).strftime('%Y-%d-%m')

答案 3 :(得分:0)

month, day, year = string.split('/').map(&:to_i)
rearranged = sprintf "%04d-%02d-%02d", year, month, day

它做了一些额外的工作(因为它对每个元素都有to_i),但它可以在以后派上用场。

答案 4 :(得分:0)

我发现它更简单:

'30/10/2016'.split('/').reverse().join('-')