Go 语言程序:忽略大小写比较两个字符串


在 Go 编程语言中,字符串是一种内置的数据类型,用于表示字符序列。它们使用双引号 (") 定义,并且可以包含任何有效的 Unicode 字符。在本文中,我们将编写一个 Go 语言程序,用于忽略大小写比较两个字符串。在这里,我们将使用 for 循环和 Go 语言中定义的内置库函数来实现结果。

语法

func ToLower(r rune) rune

ToLower() 函数位于 unicode 包中,用于将给定字符串转换为小写。它以 rune 字符作为参数,并通过将给定的 rune 转换为小写来返回一个小写的 rune。此函数将在本文中的两种方法中都使用。

方法 1:使用内部函数

在本方法中,我们将学习如何创建一个用户自定义函数,该函数将帮助比较两个字符串而不考虑其大小写。

算法

  • 步骤 1 − 首先,我们需要导入 fmt 和 strings 包。

  • 步骤 2 − 然后,开始 main() 函数。在 main() 内部初始化两个字符串数据类型的变量,并将值存储到它们中。

  • 步骤 3 − 接下来使用 fmt.Println() 函数在屏幕上打印这两个字符串。如果两个字符串的长度不同,则打印字符串长度不同并停止程序的进一步执行。

  • 步骤 4 − 然后,使用 for 循环遍历第一个字符串,并使用 ToLower() 函数将字符串的每个字符更改为小写。同时使用 if 条件比较每个字符。

  • 步骤 5 − 如果字符串的任何字符被发现不同,则打印字符串不相等并停止程序的进一步执行。

  • 步骤 6 − 如果 for 循环完成,则表示两个字符串相等,唯一的区别在于大小写。因此,打印两个字符串相等,忽略大小写。

示例

在本示例中,我们将编写一个 Go 语言程序,使用 for 循环来忽略大小写比较两个字符串。

package main
import (
   "fmt"
   "strings"
)

func main() {
   var str1 string = "Hello World"
   var str2 string = "HELLO WORLD"
   fmt.Println("The first string is:\n", str1)
   fmt.Println("The second string is:\n", str2)
   fmt.Println()
   if len(str1) != len(str2) {
      fmt.Println("The strings have different length.")
      return
   }

   for i := 0; i < len(str1); i++ {
      if strings.ToLower(string(str1[i])) != strings.ToLower(string(str2[i])) {
         fmt.Println("The strings are not equal.")
         return
      }
   }

   fmt.Println("The two given strings are equal, ignoring case.")
}

输出

The first string is:
 Hello World
The second string is:
 HELLO WORLD

The two given strings are equal, ignoring case.

方法 2:使用 Go 语言的内部函数

在本方法中,我们将学习 Go 语言的两个内部函数 - Compare() 和 contains()。这两个语法的解释如下:

语法

func Compare(a, b string) int

compare() 函数位于 strings 包中,用于比较两个字符串值。此函数以两个字符串作为参数,并根据第一个字符串是大于、小于还是等于第二个字符串返回一个整数值。

func Contains(str, substr string) bool

contain() 函数位于 strings 包中,用于检查给定的子字符串是否出现在字符串中。该函数接受两个字符串作为函数的参数,并根据子字符串是否找到返回布尔值。如果函数返回的值为真,则找到子字符串,反之亦然。

func HasPrefix(str, prefix string) bool

HasPrefix() 函数位于 strings 包中,用于检查子字符串是否是给定字符串的一部分。该函数接受两个参数,一个是待检查的字符串,另一个是子字符串,然后该函数根据字符串是否以特定子字符串开头返回一个布尔变量。

算法

  • 步骤 1 − 首先,我们需要导入 fmt 和 strings 包。

  • 步骤 2 − 然后,开始 main() 函数。在 main() 内部初始化两个字符串数据类型的变量,并将元素存储到其中。此外,在屏幕上打印这两个字符串。

  • 步骤 3 − 现在,使用 ToLower() 函数将两个字符串都转换为小写,并使用 strings 包中的 Compare() 函数进行比较。

  • 步骤 4 − 如果函数返回的值为零,则表示两个字符串相等,因此在屏幕上打印它。

  • 步骤 5 − 否则,打印字符串不相等。

示例 1

在本示例中,我们将编写一个 Go 语言程序,使用 compare() 函数来忽略大小写比较两个字符串。

package main
import (
   "fmt"
   "strings"
)

func main() {
   var str1 string = "Hello World"
   var str2 string = "HELLO WORLD"
   fmt.Println("The first string is:\n", str1)
   fmt.Println("The second string is:\n", str2)
   fmt.Println()

   if strings.Compare(strings.ToLower(str1), strings.ToLower(str2)) == 0 {
      fmt.Println("The strings are equal, ignoring case.")
   } else {
      fmt.Println("The strings are not equal.")
   }
}

输出

The first string is:
 Hello World
The second string is:
 HELLO WORLD

The strings are equal, ignoring case.

示例 2

在本示例中,我们将编写一个 Go 语言程序,使用 contains() 函数比较两个字符串。

package main
import (
   "fmt"
   "strings"
)

func main() {
   var str1 string = "Hello World"
   var str2 string = "hI"
   fmt.Println("The first string is:\n", str1)
   fmt.Println("The second string is:\n", str2)
   fmt.Println()

   if strings.Contains(strings.ToLower(str1), strings.ToLower(str2)) {
      fmt.Println("The first string contains the second string, ignoring case.")
   } else {
      fmt.Println("The first string does not contain the second string.")
   }
}

输出

The first string is:
 Hello World
The second string is:
 hI

The first string does not contain the second string.

示例 3

在本示例中,我们将编写一个 Go 语言程序,使用 HasPrefix() 函数比较两个字符串。

package main
import (
   "fmt"
   "strings"
)

func main() {
   var str1 string = "Hello World"
   var str2 string = "hELLo"
   fmt.Println("The first string is:\n", str1)
   fmt.Println("The second string is:\n", str2)
   fmt.Println()

   if strings.HasPrefix(strings.ToLower(str1), strings.ToLower(str2)) {
      fmt.Println("The first string starts with the second string, ignoring case.")
   } else {
      fmt.Println("The first string does not start with the second string.")
   }
}

输出

The first string is:
 Hello World
The second string is:
 hELLo

The first string starts with the second string, ignoring case.

结论

我们已经成功编译并执行了一个 Go 语言程序,使用示例来忽略大小写比较两个字符串。

更新于: 2023年2月17日

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.