<分区>
我有一个日期格式为 dd.mm.yyyy 的文件(例如 31.12.2019)。 我想转换成 yyyy-mm-dd 格式(例如 2019-12-31)。
在 Notepad++ 中,我可以使用反向引用对这些字符串进行搜索和替换:
搜索:
(\d{2}).(\d{2}).(\d{4})
替换:
\3-\2-\1
我如何使用 Go 来做到这一点?
<分区>
我有一个日期格式为 dd.mm.yyyy 的文件(例如 31.12.2019)。 我想转换成 yyyy-mm-dd 格式(例如 2019-12-31)。
在 Notepad++ 中,我可以使用反向引用对这些字符串进行搜索和替换:
搜索:
(\d{2}).(\d{2}).(\d{4})
替换:
\3-\2-\1
我如何使用 Go 来做到这一点?
最佳答案
您可以通过对输入字符串进行 slice ,然后按不同顺序组装各个部分来实现:
func transform(s string) string {
d, m, y := s[:2], s[3:5], s[6:]
return y + "-" + m + "-" + d
}
注意:上述函数不验证输入,如果输入短于 6 个字节,它可能会 panic。
如果您需要输入验证(包括日期验证),您可以使用 time
包来解析日期,并将其格式化为您期望的输出:
func transform2(s string) (string, error) {
t, err := time.Parse("02.01.2006", s)
if err != nil {
return "", err
}
return t.Format("2006-01-02"), nil
}
测试以上功能:
fmt.Println(transform("31.12.2019"))
fmt.Println(transform2("31.12.2019"))
输出(在 Go Playground 上尝试):
2019-12-31
2019-12-31 <nil>
关于regex - 我如何在 Go 中使用/访问捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311842/