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

Case insensitive string comparison in Go

如何以不区分大小写的方式比较字符串?

例如,"Go"和"go"应该被认为是相等的。

https://golang.org/pkg/strings/#EqualFold 是您要查找的函数。它是这样使用的(链接文档中的示例):

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.EqualFold("Go", "go"))
}

strings.EqualFold 的替代方法,bytes.EqualFold 的工作方式相同

package main

import (
    "bytes"
    "fmt"
)

func main() {
    fmt.Println(bytes.EqualFold([]byte("Go"), []byte("go")))
}

https://golang.org/pkg/bytes/#EqualFold

方法一:

func CompareStringsInCrudeWay(stringA, stringB string) (bool, error) {
  if strings.ToLower(stringA) == strings.ToLower(stringB) {
      return true, nil
  } else {
      return false, nil
  }
}

方法二:

func Compare(stringA, stringB string) bool {
  for i := 0; i < len(stringA); i++ {
      if stringA[i] == stringB[i] {
          continue
      }
      if unicode.ToLower(stringA[i]) != unicode.ToLower(stringB[i]) {
          return false
      }
  }
  return true
}

方法三:

func CompareStringsInEfficientWay(stringA, stringB string) (bool, error) {
   if strings.EqualFold(stringA, stringB) {
      return true, nil
   } else {
      return false, nil
   }
}

方法三其实就是方法二的包装,两者都是高效的。您可以查看 this blog 以获得更多说明。