在Go模板中进行不区分大小写的字符串比较

3

Go模板提供了一个eq比较运算符,例如:{{if eq .Var "val" }}

在这种情况下,最好的方法是进行不区分大小写的字符串比较,使得上述语句对于变量Var为"val"、"Val"或"VAL"都成立。

2个回答

4

您可以简单地创建另一个小写变量s1 := strings.ToLower(s),并将其与模板中的小写字符串进行比较。


3
你可以使用 template.Funcs() 来注册自定义函数,以便在模板中使用。
有一个strings.EqualFold()函数,可以执行字符串的不区分大小写比较。因此,只需注册该函数,即可从模板中调用它:
t := template.Must(template.New("").Funcs(template.FuncMap{
    "MyEq": strings.EqualFold,
}).Parse(`"{{.}}" {{if MyEq . "val"}}matches{{else}}doesn't match{{end}} "val".`))

t.Execute(os.Stdout, "Val")
fmt.Println()
t.Execute(os.Stdout, "NotVal")

结果:

"Val" matches "val".
"NotVal" doesn't match "val".

Go Playground上试试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接