我有像
这样的字符串“2014-06-01 - 今天” 要么 “2014-05-01 - 2014-06-01”
在这两种情况下,我希望日期部分形成如下 “01-06-2014 - 今天” 要么 “01-05-2014 - 01-06-2014”
最后只是从后面转到前面
我在使用gsub或任何其他表达方式进行格式化时效果不佳。
答案 0 :(得分:1)
只是为了给你一个想法:
local v1 = "2014-06-01 - Today"
local v2 = "01-06-2014 - Today"
assert(v1:gsub('(%d%d%d%d)%-(%d%d)%-(%d%d)', "%3-%2-%1") == v2)
模式:http://www.lua.org/manual/5.2/manual.html#6.4.1 教程:http://lua-users.org/wiki/PatternsTutorial
所以,你可以某种方式(使用像match
这样的smth)来区分你的变种然后使用相应的模式。
编辑:正如@lhf指出的那样,我在第一个例子中错过了-
签到模式的转义。他还注意到,在你的情况下,gsub可以自动进行两次替换,因此下面的代码应该是正确的:
local v1 = "2014-06-01 - Today"
local v2 = "01-06-2014 - Today"
local v3 = "2014-05-01 - 2014-06-01"
local v4 = "01-05-2014 - 01-06-2014"
local convert = function(str)
return str:gsub('(%d%d%d%d)%-(%d%d)%-(%d%d)', "%3-%2-%1")
end
assert(convert(v1) == v2)
assert(convert(v3) == v4)