Go test string contains substring

How do I check if a string is a substring of another string in Go? For example, I want to check someString.contains("something").

0

2 Answers

Use the function Contains from the strings package.

import ( "strings" ) strings.Contains("something", "some") // true 

To compare, there are more options:

import ( "fmt" "regexp" "strings" ) const ( str = "something" substr = "some" ) // 1. Contains res := strings.Contains(str, substr) fmt.Println(res) // true // 2. Index: check the index of the first instance of substr in str, or -1 if substr is not present i := strings.Index(str, substr) fmt.Println(i) // 0 // 3. Split by substr and check len of the slice, or length is 1 if substr is not present ss := strings.Split(str, substr) fmt.Println(len(ss)) // 2 // 4. Check number of non-overlapping instances of substr in str c := strings.Count(str, substr) fmt.Println(c) // 1 // 5. RegExp matched, _ := regexp.MatchString(substr, str) fmt.Println(matched) // true // 6. Compiled RegExp re = regexp.MustCompile(substr) res = re.MatchString(str) fmt.Println(res) // true 

Benchmarks: Contains internally calls Index, so the speed is almost the same (btw Go 1.11.5 showed a bit bigger difference than on Go 1.14.3).

BenchmarkStringsContains-4 100000000 10.5 ns/op 0 B/op 0 allocs/op BenchmarkStringsIndex-4 117090943 10.1 ns/op 0 B/op 0 allocs/op BenchmarkStringsSplit-4 6958126 152 ns/op 32 B/op 1 allocs/op BenchmarkStringsCount-4 42397729 29.1 ns/op 0 B/op 0 allocs/op BenchmarkStringsRegExp-4 461696 2467 ns/op 1326 B/op 16 allocs/op BenchmarkStringsRegExpCompiled-4 7109509 168 ns/op 0 B/op 0 allocs/op 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like