【问题标题】:How to replace multiple characters in the same string?如何替换同一字符串中的多个字符?
【发布时间】:2021-11-25 04:17:35
【问题描述】:

我一般不太精通编程,所以请在这里放慢我的脚步。 有没有更优雅的方法来处理替换字符串中多个字符的过程?

strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(godiacritics.Normalize(strings.ToLower(articles[i].Name)), "-", "_"), " ", "_"), ",", "_"), ".", ""), "/", ""), "€", ""), "%", ""), "12", "halb"), "14", "viertel")

【问题讨论】:

    标签: string go


    【解决方案1】:

    创建一个包含所有可替换对的strings.Replacer

    r := strings.NewReplacer(
        "-", "_",
        " ", "_",
        ",", "_",
        ".", "",
        "/", "",
        "€", "",
        "%", "",
        "12", "halb",
        "14", "viertel",
    )
    

    并像这样使用它:

    s2 := r.Replace(godiacritics.Normalize(strings.ToLower(articles[i].Name)))
    

    strings.Replacer 在一个步骤中执行所有替换(它迭代字符串一次)。并发使用也是安全的,创建一次 Replacer 并在需要时/随时随地重复使用它。

    测试它的示例代码:

    s := "test- ,./€%:12 14"
    s2 := strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(s, "-", "_"), " ", "_"), ",", "_"), ".", ""), "/", ""), "€", ""), "%", ""), "12", "halb"), "14", "viertel")
    fmt.Println(s2)
    
    r := strings.NewReplacer(
        "-", "_",
        " ", "_",
        ",", "_",
        ".", "",
        "/", "",
        "€", "",
        "%", "",
        "12", "halb",
        "14", "viertel",
    )
    
    s3 := r.Replace(s)
    fmt.Println(s3)
    

    哪些输出(在Go Playground 上试试):

    test___:halb_viertel
    test___:halb_viertel
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-31
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      相关资源
      最近更新 更多