string - 将多个月份字符串替换为月份整数
问题描述
我正在使用如下字符串:
"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 种不同的正则表达式测试?
解决方案
使用降低字符串strings.ToLower()
,然后您可以使用strings.Replacer
12 个月的单个“步骤”中的所有可能替换:
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
推荐阅读
- python - 从 metric_learning LMNN 算法中恢复变换矩阵
- html - 在 HTML 应用程序 (.hta) 文件中编码 .ico
- javascript - 使用聚合管道在 MongoDB 中将功能从一个集合添加到另一个集合
- node.js - Node.js 3rd 方 REST API 调用
- c# - 如何使用 Appium 执行双击
- mongodb - Azure CosmosDB - 更新属性名称
- git - 杀死 git push 进程,丢失所有文件
- python - 如何解决 Hangman Game 中的单词生成错误?
- json - Hapi 响应不显示树状(嵌套)json
- arrays - 如何为 for 循环中创建的每个对象创建单独的 UUID?