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

时间:2015-07-28 03:08:31

标签: templates go string-comparison case-insensitive

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

在这种情况下,进行不区分大小写的字符串比较的最佳方法是什么?因此,对于Var来说,上述情况将是“val”,“Val”或“VAL”。

2 个答案:

答案 0 :(得分:3)

您只需创建另一个lowercase变量s1 := strings.ToLower(s),并将其与模板与小写字符串进行比较。

答案 1 :(得分:2)

您可以使用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上尝试。