将多个月份字符串替换为月份整数

我正在使用如下字符串:

"JAN-5,Feb,6 dec=900"

我正在寻找用它们各自的月份 int 值替换月份字符串。所以上面将等同于:

"1-5,2,6 12=900"

我知道使用不区分大小写的正则表达式可能是可行的方法,但是我只看到了如何一次将其应用于一个月的示例,这似乎效率低下,例如:

re := regexp.MustCompile(`(?i)jan`)
fmt.Println(re.ReplaceAllString("JAN-5,Feb,6 dec=900", "1"))

有没有更简单的方法来做到这一点,而不是对字符串应用 12 种不同的正则表达式测试?


当年话下
浏览 102回答 1
1回答

慕沐林林

使用降低字符串strings.ToLower(),然后您可以使用strings.Replacer12 个月的单个“步骤”中的所有可能替换:var r = strings.NewReplacer(    "jan", "1",    "feb", "2",    "mar", "3",    "apr", "4",    "may", "5",    "jun", "6",    "jul", "7",    "aug", "8",    "sep", "9",    "oct", "10",    "nov", "11",    "dec", "12",)func main() {    s := "JAN-5,Feb,6 dec=900"    s2 := r.Replace(strings.ToLower(s))    fmt.Println(s2)}这将输出(在Go Playground上尝试):1-5,2,6 12=900
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go