我有一个日期格式为 dd.mm.yyyy 的文件(例如 31.12.2019)。我想转换成格式yyyy-mm-dd(例如2019-12-31)。在 Notepad++ 中,我可以使用反向引用对这些字符串进行搜索和替换:搜索:(\d{2}).(\d{2}).(\d{4})代替:\3-\2-\1我该如何使用 Go 来做到这一点?
2 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
您可以通过切片输入字符串并以不同的顺序组装各个部分来完成此操作:
func transform(s string) string {
d, m, y := s[:2], s[3:5], s[6:]
return y + "-" + m + "-" + d
}
注意:上面的函数不会验证输入,如果输入短于 6 个字节,它可能会出现错误。
如果您需要输入验证(包括日期验证),您可以使用该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>
桃花长相依
TA贡献1860条经验 获得超8个赞
正则表达式可能有点矫枉过正,因为您有如此明确定义的输入。这个怎么样:
var dmy = strings.Split("31.12.2019",".") var mdy = []string{dmy[1],dmy[0],dmy[2]} fmt.Println(strings.Join(mdy, "-"))
https://play.golang.org/p/Ak3TlCAGHUv
- 2 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消