Golang : Check if a string contains multiple sub-strings in []string?
Problem :
You have a string and you use strings.Contains()
function to determine if there is a sub-string inside the main string.
Such as :
Main string : ["apple is fruit"]
Sub string : ["apple"]
Now, you want to check against multiple sub-strings instead of just a single sub-string.
Main string : ["apple is fruit and tomato is a vegetable"]
Sub strings : ["fruit", "apple", "orange"]
How to do that?
Solution :
I've developed a bad word language filter for my own use. The has()
function below used the strings.Index()
function to determine if a bad word is inside the main string and break the for loop at first instance of a bad word detected. You can modified it for your own use. Perhaps, append those bad words into a slice and report them instead of breaking the for loop at first instance.
func has(input string, words []string) (bool, string) {
for _, word := range words {
if strings.Index(input, word) > -1 {
return true, word
break
}
}
return false, ""
}
var badWords = []string{"fuck", "shit", "cunt"}
result, badWordFound := has(input, badWords)
if result {
fmt.Println("The word %s is a bad word.\n", badWordFound)
}
Is there another way to do this? Sure! You can use the strings.ContainsAny()
function too.
Here you go!
package main
import (
"fmt"
"strings"
)
func main() {
x := "I feel like having a good sleep tonight"
y := []string{"like", "having"}
for i := 0; i < len(y); i++ {
//fmt.Println(strings.ContainsAny(x,y[i]))
if strings.ContainsAny(x, y[i]) {
fmt.Printf("Detected word - [%s]\n", y[i])
}
}
}
Play at : http://play.golang.org/p/CSVQprocj4
Happy coding!
Reference :
https://www.socketloop.com/tutorials/golang-how-to-check-if-a-string-contains-another-sub-string
See also : Golang : How to check if a string contains another sub-string?
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Tutorials
+31.2k Golang : Smarter Error Handling with strings.Contains()
+9.1k Golang : Text file editor (accept input from screen and save to file)
+6.4k Golang : How to convert strange string to JSON with json.MarshalIndent
+4.8k Unix/Linux : Get reboot history or check when was the last reboot date
+12.7k Golang: Pad right or print ending(suffix) zero or spaces in fmt.Printf example
+9.5k Golang : How to unmarshal JSON inner/nested value and assign to specific struct?
+5k Java : Human readable password generator
+37.8k Golang : How to iterate over a []string(array)
+5.7k Restart Apache or Nginx web server without password prompt
+5.2k Golang : Experimental emojis or emoticons icons programming language
+6k Linux : How to fix Brother HL-1110 printing blank page problem
+17.2k Golang : Generate thumbnails from images