কোনও স্ট্রিং গো-তে অন্য স্ট্রিংয়ের একটি স্ট্রিং কিনা তা আমি কীভাবে পরীক্ষা করব? উদাহরণস্বরূপ, আমি চেক করতে চাই someString.contains("something")
।
কোনও স্ট্রিং গো-তে অন্য স্ট্রিংয়ের একটি স্ট্রিং কিনা তা আমি কীভাবে পরীক্ষা করব? উদাহরণস্বরূপ, আমি চেক করতে চাই someString.contains("something")
।
উত্তর:
স্ট্রিং প্যাকেজ Contains
থেকে ফাংশনটি ব্যবহার করুন ।
import (
"strings"
)
strings.Contains("something", "some") // true
তুলনা করতে, আরও বিকল্প রয়েছে:
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
বেঞ্চমার্কস:
Contains
অভ্যন্তরীণভাবে কল করা হয় Index
, তাই গতি প্রায় সমান (বিটিডব্লিউ গো 1.11.5 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