在Lua中更改字符串格式

我有如下字符串

"2014-06-01 - Today" 或 "2014-05-01 - 2014-06-01"

在这两种情况下,我希望日期部分的格式如下 "01-06-2014 - Today" 或 "01-05-2014 - 01-06-2014"

最后将日期从后往前转换

我不太擅长使用gsub等表达式方式进行格式化。

点赞
用户1601606
用户1601606

只是给您一个想法:

local v1 = "2014-06-01 - 今天"
local v2 = "01-06-2014 - 今天"

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的方法来区分您的变体,然后使用相应的模式。

编辑:正如@lhf指出的那样,在我第一个示例中,我错过了模式中的-符号转义。 他还注意到,在您的情况下,gsub可以自动执行两次替换,因此以下代码应该是正确的:

local v1 = "2014-06-01 - 今天"
local v2 = "01-06-2014 - 今天"
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)
2014-06-10 23:17:38