Я хотел бы проверить, есть ли спам-слова в тексте, отправленном пользователем. Итак, вот функция, которую я написал:
func TextHasSpamWords(text string, spamWords []string) bool {
removePunctuation := func(r rune) rune {
if strings.ContainsRune(".,:;", r) {
return -1
} else {
return r
}
}
text = strings.Map(removePunctuation, text)
sort.Strings(spamWords)
for _, word := range text {
for _, sapmWord := range spamWords {
if word == sapmWord {
return true
}
}
}
}
Но я получаю mismatched type rune and string
при word == sapmWord
. Я знаю, что это потому, что removePunctuation
возвращает руны (он же int32), которые нельзя сравнить со строкой (unit8). Но удаление пунктуации необходимо для работы функции, поэтому мне интересно, как я могу это исправить? Или, может быть, есть более идиоматический c способ сделать это?