举例有一个时间字符串2012:02:02 09:09:09,其中你年月日部分应该使用-连接,而不是:
2012:02:02 09:09:09
-
:
有没有方法可以只替换前两次出现的:成-?
PS: 现在想到的就是把字符串拆成 2 部分,替换完在接起来,有没有更简单的方法呢?
irb(main):003:0> t = "2012:02:02 09:09:09" => "2012:02:02 09:09:09" irb(main):004:0> 2.times do irb(main):005:1* t = t.sub(':', '-') irb(main):006:1> end => 2 irb(main):007:0> t => "2012-02-02 09:09:09" irb(main):008:0>
#1 楼 @kingwkb 好的,次数比较少的话就先t.sub(':', '-').sub(':', '-')了
t.sub(':', '-').sub(':', '-')
t.gsub(/^(\d+):(\d+):(\d+)/, '\1-\2-\3')
#3 楼 @piecehealth Thanks!
另一种思路是取空格前面部分进行替换:
t.gsub(/(.*) /) { |ymd| ymd.gsub(':', '-') }
t[/(\d|:)+\b/] = $&.gsub(':','-')