我一般不太精通编程,所以请在这里放我一马。\n有没有更优雅的方法来解决替换字符串中多个字符的过程?
\nstrings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(godiacritics.Normalize(strings.ToLower(articles[i].Name)), "-", "_"), " ", "_"), ",", "_"), ".", ""), "/", ""), "\xe2\x82\xac", ""), "%", ""), "12", "halb"), "14", "viertel")\nRun Code Online (Sandbox Code Playgroud)\n
icz*_*cza 14
创建一个strings.Replacer包含所有可替换对的单个:
r := strings.NewReplacer(\n "-", "_",\n " ", "_",\n ",", "_",\n ".", "",\n "/", "",\n "\xe2\x82\xac", "",\n "%", "",\n "12", "halb",\n "14", "viertel",\n)\nRun Code Online (Sandbox Code Playgroud)\n并像这样使用它:
\ns2 := r.Replace(godiacritics.Normalize(strings.ToLower(articles[i].Name)))\nRun Code Online (Sandbox Code Playgroud)\nstrings.Replacer在一个步骤中执行所有替换(它迭代字符串一次)。它对于并发使用也是安全的,创建Replacer一次并在需要时/任何地方重复使用它。
测试它的示例代码:
\ns := "test- ,./\xe2\x82\xac%:12 14"\ns2 := strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(s, "-", "_"), " ", "_"), ",", "_"), ".", ""), "/", ""), "\xe2\x82\xac", ""), "%", ""), "12", "halb"), "14", "viertel")\nfmt.Println(s2)\n\nr := strings.NewReplacer(\n "-", "_",\n " ", "_",\n ",", "_",\n ".", "",\n "/", "",\n "\xe2\x82\xac", "",\n "%", "",\n "12", "halb",\n "14", "viertel",\n)\n\ns3 := r.Replace(s)\nfmt.Println(s3)\nRun Code Online (Sandbox Code Playgroud)\n哪个输出(在Go Playground上尝试):
\ntest___:halb_viertel\ntest___:halb_viertel\nRun Code Online (Sandbox Code Playgroud)\n