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.