How to check String for equality under Unicode case folding in Golang?


In Golang, checking string equality is a common task that developers come across when building applications. However, when dealing with strings that contain characters with different case representations in Unicode, it can become a little complicated. Unicode case folding is the process of transforming characters to a common case representation to simplify case-insensitive comparisons. In this article, we will explore how to check string equality under Unicode case folding in Golang.

What is Unicode Case Folding?

Unicode case folding is a process that converts characters to a common case representation to simplify case-insensitive comparisons. In Unicode, some characters have more than one case representation, such as uppercase, lowercase, and titlecase. Case folding converts all these case representations to a single case representation, which is usually lowercase.

Checking String Equality under Unicode Case Folding

In Golang, you can use the strings.EqualFold() function to check string equality under Unicode case folding. This function takes two strings as arguments and returns true if they are equal under Unicode case folding, and false otherwise.

Example

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.")
   }
}

Output

The strings are not equal under Unicode case folding.

In the above example, we have used the strings.EqualFold() function to check if the strings str1 and str2 are equal under Unicode case folding. As both strings contain the same characters but with different case representations, the function returns true.

If you want to perform a case-insensitive comparison between two strings, you can also use the strings.ToLower() function to convert both strings to lowercase before comparing them −

Example

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)")
   }
}

Output

The strings are equal (case-insensitive)

In this example, we convert both strings to lowercase using the strings.ToLower() function before comparing them using the == operator. This produces the same result as using strings.EqualFold(), but without the overhead of Unicode case folding.

Conclusion

Checking string equality under Unicode case folding is a common task when dealing with strings that contain characters with different case representations in Unicode. In Golang, you can use the strings.EqualFold() function to check string equality under Unicode case folding. This function is useful when you need to compare strings without considering the case of the characters in the strings.

Updated on: 20-Apr-2023

170 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements