我有一个字符串字符串像“汽车”和另一个像“acasras”都包含subStr像“汽车”当删除字符串中一些字符时,我如何在Golang中检查它?我还使用了contain(字符串,subStr),但它只包括像“汽车”这样的字符串,但我也想检测像“acasras”这样的字符串。三氮杂萘函数包含(字符串,子字符串)
smtd7mpg1#
没有Go语言的strings包函数,你自己写函数吧。例如,
strings
package main import "fmt" func contains(str, subStr string) bool { if len(subStr) == 0 { return true } subChars := []rune(subStr) sc := 0 for _, strChar := range str { if strChar == subChars[sc] { sc++ if sc >= len(subChars) { return true } } } return false } func main() { subStr := "car" fmt.Println(subStr) str := "cars" fmt.Println(str) fmt.Println(contains(str, subStr)) str = "acasras" fmt.Println(str) fmt.Println(contains(str, subStr)) }
https://go.dev/play/p/PGbrZsZCD1y
car cars true acasras true
mu0hgdu02#
下面是一个递归的方法:
package main import ( "fmt" "strings" ) func main() { fmt.Println(isInside("something", "")) // true fmt.Println(isInside("acasras", "cars")) // true fmt.Println(isInside("acasras", "cacs")) // false } func isInside(str, subStr string) bool { if len(subStr) == 0 { return true } head := getHead(subStr) tail := getTail(subStr) if strings.Contains(str, head) { return isInside(str[strings.Index(str, head)+1:], tail) } return false } func getHead(s string) string { if len(s) == 0 { return "" } return string(s[0]) } func getTail(s string) string { if len(s) == 0 || len(s) == 1 { return "" } return string(s[1:]) }
2条答案
按热度按时间smtd7mpg1#
没有Go语言的
strings
包函数,你自己写函数吧。例如,
https://go.dev/play/p/PGbrZsZCD1y
mu0hgdu02#
下面是一个递归的方法: