Golang程序 获取字符串中子串的索引

Golang程序 获取字符串中子串的索引

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

方法1:使用For Loop

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

算法

  • 第1步 – 首先,我们需要导入fmt包。

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

  • 第 3步 – 在这个函数中,我们使用for循环来迭代字符串,并使用if条件来检查子串的当前字符是否出现在字符串的任何位置。

  • 第4步 – 如果子串是字符串的一部分,那么我们需要返回迭代变量的值。

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

  • 第6步 – 现在,调用IndexOfStrings()函数,将字符串和子字符串作为参数传递给该函数。将结果存储在一个叫做index的变量中。

  • 第7步 – 如果index返回的值是-1,那么我们需要打印出子串不是字符串的一部分,否则就在屏幕上打印出子串与index值一起被找到。

例子

在这个例子中,我们将在一个外部函数中使用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'

方法2:使用Index()函数

在这个方法中,我们将使用golang的内部索引函数。在第一个例子中,我们使用 index() 函数,在第二个例子中我们使用 indexRune() 函数。两个语法都解释如下

语法

func Index(s, substr string) int

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

func IndexRune(s, substr string) int

indexRune()函数存在于strings包中,用于获取给定符文字符的首次出现的索引。该函数需要两个参数。一个是字符串,另一个是要检测其出现的符文。然后,该函数返回该符文首次出现的整数值。

算法

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

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

  • 第3步 – 现在,调用index()函数,将字符串和子串作为参数传递给它,并将结果存储在一个叫做index的变量中。

  • 第4步 – 如果index的值是-1,那么我们需要打印出子串不是字符串的一部分,否则就在屏幕上打印出子串和index的值一起被找到。

例子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!'

总结

我们已经成功地编译并执行了一个Golang程序,以获取字符串中子串的索引,并附有实例。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程