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

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

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

方法1:使用For循环

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

步骤

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

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

  • 步骤3 - 在这个函数内部,我们使用for循环遍历字符串,并使用if条件来检查子字符串的当前字符是否出现在字符串的任何位置。

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

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

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

  • 步骤7 - 如果索引返回的值为-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'

方法2:使用Index()函数

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

语法

func Index(s, substr string) int

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

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

在此示例中,我们将使用字符串包中的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程序,用以获得字符串中子字符串的索引,并附有示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程