首页 > 解决方案 > 将切片中的单个字符串替换为一组字符串

问题描述

我想要一段字符串,当找到某些字符串时,将它们替换为一组相关的字符串。

例如,如果我有这个:

[]string{"A","FROM_B_TO_E","F"}

在我的方法运行后,我想要:

[]string{"A","B","C","D","E","F"}

我想出了这段代码,问题是,虽然我可以在实际添加之前打印我的to_be_added切片,但由于某种原因它不起作用。但是,如果我更改我的translateRule它确实有效,因此它不会返回一个字符串片段,而是只返回一个字符串:

  func groupRules(validationRules []string){
        for index,rulename := range validationRules {
            if succeeded, to_be_added := translateRule(rulename) ; succeeded == true{
                fmt.Println("Entro! ", to_be_added)
                validationRules = append(append(validationRules[:index],to_be_added...), validationRules[index+1:]...)
            }
        }
    }
    func translateRule(rule string) ( bool , []string ) {
        if rule == "rs_full" {
            return true,[]string{"sapo","rana"}
        }
        return false,nil
    }

标签: goslice

解决方案


所以,我缺乏 Go 经验或者我写的代码不好导致我这样做:

func groupRules(validationRules []string) []string{
    var tmp_slice []string
    for _ ,rulename := range validationRules {
        if succeeded, to_be_added := translateRule(rulename) ; succeeded == true{
            tmp_slice = append(tmp_slice,to_be_added...)
        }else{
            tmp_slice = append(tmp_slice,rulename)
        }
    }
    return tmp_slice
}
func translateRule(rule string) ( bool , []string ) {
    if rule == "rs_full" {
        return true,[]string{"sapo","rana","tigre"}
    }
    return false,nil
}

现在它完美无缺。

谢谢你们。


推荐阅读