Go语言程序:获取字符串中子串的索引


在Go编程语言中,字符串是一种内置数据类型,表示字符序列。它们使用双引号(")定义,可以包含任何有效的Unicode字符。子串是字符串的一部分,包含来自原始字符串的字符序列。在Go中,可以使用字符串值的切片语法获取子串。本文将学习使用Go语言获取字符串中子串索引的不同方法。

方法一:使用for循环

在这种方法中,我们创建的函数将字符串和子串作为参数,并使用for循环处理它们以返回找到给定子串的位置索引。

算法

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

  • 步骤2 − 然后我们需要创建函数indexOfString()。此函数将字符串和子串作为参数,并返回一个整数值。

  • 步骤3 − 在此函数中,我们使用for循环迭代字符串,并使用if条件检查子串的当前字符是否存在于字符串的任何位置。

  • 步骤4 − 如果子串是字符串的一部分,则需要返回迭代变量的值。

  • 步骤5 − 如果子串不是字符串的一部分,则需要返回-1。现在开始main()函数。在程序的main()部分,初始化两个名为string和substring的字符串类型变量,并在其中存储值。

  • 步骤6 − 现在,通过将字符串和子串作为参数传递给函数,调用IndexOfStrings()函数。将结果存储在一个名为index的变量中。

  • 步骤7 − 如果index返回的值为-1,则需要打印子串不是字符串的一部分,否则打印子串已找到以及屏幕上的索引值。

示例

在这个例子中,我们将使用for循环,在一个外部函数中使用for循环来获取字符串中子串的索引。

package main
import "fmt"

func IndexOfSubstring(str, subStr string) int {
   for i := 0; i < len(str); i++ {
      if str[i:i+len(subStr)] == subStr {
         return i
      }
   }
   return -1
}

func main() {
   var str string = "Its a beautiful day"
   var subStr string = "day"
   var index int = IndexOfSubstring(str, subStr)
   if index != -1 {
      fmt.Printf("The substring '%s' is found at index %d in the string '%s'\n", subStr, index, str)
   } else {
      fmt.Printf("The substring '%s' is not found in the string '%s'\n", subStr, str)
   }
}

输出

The substring 'day' is found at index 16 in the string 'Its a beautiful day'

方法二:使用Index()函数

在这种方法中,我们将使用Go语言中的内置Index函数。在第一个示例中,我们使用的是index()函数,在第二个示例中,我们使用的是indexRune()函数。下面解释了两种语法:

语法

func Index(s, substr string) int

index()函数位于strings包中,用于获取给定子串的第一次出现的索引。该函数将两个值作为参数。一个是字符串,另一个是要检测其出现的子串。然后,该函数以整数格式返回该子串的第一次出现。

func IndexRune(s, substr string) int

indexRune()函数位于strings包中,用于获取给定rune字符的第一次出现的索引。该函数将两个值作为参数。一个是字符串,另一个是要检测其出现的rune。然后,该函数返回该rune第一次出现的整数值。

算法

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

  • 步骤2 − 然后,我们需要启动main()函数。在main()中初始化两个名为string和substr的变量,并为它们赋值。

  • 步骤3 − 现在,通过将字符串和子串作为参数传递给它,调用Index()函数,并将结果存储在一个名为index的变量中。

  • 步骤4 − 如果index的值为-1,则需要打印子串不是字符串的一部分,否则打印子串已找到以及屏幕上的索引值。

示例1

在这个例子中,我们将使用Index()函数来获取字符串中存在的子串的索引。

package main
import (
   "fmt"
   "strings"
)

func main() {
   var str string = "Your smile is a precious gem keep smiling!"
   var subStr string = "gem"
   index := strings.Index(str, subStr)
   if index != -1 {
      fmt.Printf("The substring '%s' is found at index %d in the string '%s'\n", subStr, index, str)
   } else {
      fmt.Printf("The substring '%s' is not found in the string '%s'\n", subStr, str)
   }
}

输出

The substring 'gem' is found at index 25 in the string 'Your smile is a precious gem keep smiling!'

示例2

在这个例子中,我们将使用strings包中提供的IndexRune()函数来获取字符串中子串的索引。

package main
import (
   "fmt"
   "strings"
)

func main() {
   var str string = "Your smile is a precious gem keep smiling!"
   var subStr rune = 'p'
   var index int = strings.IndexRune(str, subStr)
   if index != -1 {
      fmt.Printf("The substring '%c' is found at index %d in the string '%s'\n", subStr, index, str)
   } else {
      fmt.Printf("The substring '%c' is not found in the string '%s'\n", subStr, str)
   }
}

输出

The substring 'p' is found at index 16 in the string 'Your smile is a precious gem keep smiling!'

结论

我们已经成功编译并执行了一个Go语言程序,用于获取字符串中子串的索引以及示例。

更新于:2023年2月17日

3K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.