如何在Go語言中檢查字串是否包含子字串?


我們知道子字串是字串中連續的字元序列,為了檢查字串是否包含子字串,我們有兩個可用的選項。

第一種方法是使用名為**Contains()**的內建函式,第二種方法是使用自己編寫的邏輯。

**strings**包的**Contains()**函式語法如下所示。

func Contains(s, substr string) bool

在上面的語法中,函式**Contains()**內有兩個引數。第一個引數是我們試圖查詢模式的字串,第二個引數是我們試圖查詢的模式。

讓我們首先考慮第一種方法。

示例1

考慮以下程式碼。

package main
import (
   "fmt"
   "strings"
)
func main() {
   var name string = "TutorialsPoint"
   fmt.Println(strings.Contains(name, "Point"))
}

輸出

如果我們使用命令**go run main.go**執行上面的程式碼,那麼我們將在終端中得到以下輸出。

true

現在我們已經看到了在上述字串中查詢子字串時最常用的方法,讓我們考慮一個同樣有效的程式碼,但邏輯是自己編寫的。

示例2

考慮以下程式碼。

package main
import (
   "fmt"
)
func main() {
   var name string = "TutorialsPoint"
   var wordToSearch string = "Point"
   res := checkIfExists(name, wordToSearch)
   if res {
      fmt.Println(wordToSearch, "is present inside the string", name)
   } else {
      fmt.Println(wordToSearch, "is not present inside the string", name)
   }
}
func checkIfExists(name, word string) bool {
   l := len(name) - len(word)
   for i := 0; i <= l; i++ {
      if patternMatch(name, i, word) {
         return true
      }
   }
   return false
}
func patternMatch(name string, index int, word string) bool {
   i := index
   for j := 0; j < len(word); j++ {
      if name[i] != word[j] {
         return false
      }
      i++
   }
   return true
}

在上面的程式碼中,函式**checkIfExists()**用於在字串中查詢模式,該函式又呼叫**patternMatch**函式。

輸出

如果我們使用命令**go run main.go**執行上面的程式碼,那麼我們將在終端中得到以下輸出。

Point is present inside the string TutorialsPoint

更新於:2022年2月21日

757 次檢視

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告