如何以不区分大小写的方式比较Go中的两个字符串值?

时间:2017-05-17 23:46:46

标签: string go comparison

如何比较两个不区分大小写的字符串? 例如:"a" == "a""a" == "A"都必须返回true

3 个答案:

答案 0 :(得分:14)

strings.EqualFold()函数执行不区分大小写的字符串比较。

例如:

fmt.Println(strings.EqualFold("aa", "Aa"))
fmt.Println(strings.EqualFold("aa", "AA"))
fmt.Println(strings.EqualFold("aa", "Ab"))

输出(在Go Playground上尝试):

true
true
false

答案 1 :(得分:0)

找到答案。将两个字符串转换为小写或大写并进行比较。 import "strings" strings.ToUpper(str1) == strings.ToUpper(str2)

答案 2 :(得分:-2)

strings.EqualFold()不进行比较,有时您需要比较的迹象

func compareNoCase(i, j string) int {
    is, js := []rune(i), []rune(j)
    il, jl := len(is), len(js)

  ml := il
    if ml > jl {
        ml = jl
    }

    for n := 0; n < ml; n++ {
        ir, jr := unicode.ToLower(is[n]), unicode.ToLower(js[n])
        if ir < jr {
            return -1
        } else if ir > jr {
            return 1
        }
    }

    if il < jl {
        return -1
    }
    if il > jl {
        return 1
    }
    return 0
}

func equalsNoCase(i, j string) bool {
    return compareNoCase(i, j) == 0
}