Golang 如何检查一个字符串是否包含一个子串

Golang 如何检查一个字符串是否包含一个子串

我们知道,子串是字符串中连续的字符序列,为了检查一个字符串是否包含子串,我们有两种选择。

第一种方法是使用一个叫做 Contains() 的内置函数,第二种方法是使用一个自己编写的逻辑来完成。

strings 包的 Contains() 函数的语法如下所示。

func Contains(s, substr string) bool
Go

在上面的语法中,函数 Contains() 里面有两个参数 。 第一个参数是我们试图寻找模式的字符串,第二个参数是我们试图寻找的模式。

让我们先考虑第一种方法。

例1

考虑一下下面的代码。

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

输出

如果我们用 go run main.go 命令运行上述代码,那么我们将在终端得到以下输出。

true
Go

现在我们已经看到了在寻找上述字符串中的子串时最常用的方法,让我们考虑一个工作原理相同的代码,但逻辑是自己写的。

例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
}
Go

在上面的代码中,函数 checkIfExists() 被用来寻找字符串中的模式,进而调用 patternMatch 函数。

输出

如果我们用 go run main.go 命令运行上述代码,那么我们将在终端得到以下输出。

Point is present inside the string TutorialsPoint
Go

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册