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 關注
- 197 瀏覽
添加回答
舉報