如何在 Golang 中检查字符串在 Unicode 大小写折叠下的相等性?


在 Golang 中,检查字符串相等性是开发人员在构建应用程序时经常遇到的常见任务。但是,当处理包含 Unicode 中不同大小写表示形式的字符的字符串时,它可能会变得有点复杂。Unicode 大小写折叠是将字符转换为通用大小写表示形式以简化不区分大小写的比较的过程。在本文中,我们将探讨如何在 Golang 中检查 Unicode 大小写折叠下的字符串相等性。

什么是 Unicode 大小写折叠?

Unicode 大小写折叠是一个将字符转换为通用大小写表示形式以简化不区分大小写比较的过程。在 Unicode 中,某些字符具有多个大小写表示形式,例如大写、小写和标题大小写。大小写折叠将所有这些大小写表示形式转换为单个大小写表示形式,通常是小写。

在 Unicode 大小写折叠下检查字符串相等性

在 Golang 中,可以使用 strings.EqualFold() 函数在 Unicode 大小写折叠下检查字符串相等性。此函数将两个字符串作为参数,如果它们在 Unicode 大小写折叠下相等,则返回 true,否则返回 false。

示例

package main

import (
   "fmt"
   "strings"
)

func main() {
   str1 := "Straße"
   str2 := "strasse"

   if strings.EqualFold(str1, str2) {
      fmt.Println("The strings are equal under Unicode case folding.")
   } else {
      fmt.Println("The strings are not equal under Unicode case folding.")
   }
}

输出

The strings are not equal under Unicode case folding.

在上面的示例中,我们使用了 strings.EqualFold() 函数来检查字符串 str1 和 str2 在 Unicode 大小写折叠下是否相等。由于这两个字符串包含相同的字符但大小写表示形式不同,因此该函数返回 true。

如果要执行两个字符串之间的不区分大小写比较,也可以使用 strings.ToLower() 函数将两个字符串都转换为小写,然后再进行比较 -

示例

package main

import "fmt"
import "strings"

func main() {
   str1 := "Hello, world!"
   str2 := "hello, WORLD!"
    
   if strings.ToLower(str1) == strings.ToLower(str2) {
      fmt.Println("The strings are equal (case-insensitive)")
   } else {
      fmt.Println("The strings are not equal (case-insensitive)")
   }
}

输出

The strings are equal (case-insensitive)

在此示例中,我们使用 strings.ToLower() 函数将两个字符串都转换为小写,然后使用 == 运算符进行比较。这会产生与使用 strings.EqualFold() 相同的结果,但没有 Unicode 大小写折叠的开销。

结论

在处理包含 Unicode 中不同大小写表示形式的字符的字符串时,在 Unicode 大小写折叠下检查字符串相等性是一项常见任务。在 Golang 中,可以使用 strings.EqualFold() 函数在 Unicode 大小写折叠下检查字符串相等性。当您需要比较字符串而不考虑字符串中字符的大小写时,此函数很有用。

更新于: 2023年4月20日

253 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.