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 关注
- 154 浏览
添加回答
举报