How to check whether a user string contains any forbidden words from a list in Swift

2 Answers

0 votes
import Foundation

let forbidden = ["badword", "evil", "kill", "nasty", "terrible"]
let text = "This text contains a badword inside"

let lower = text.lowercased()

if forbidden.contains(where: { lower.contains($0) }) {
    print("Forbidden word detected")
} else {
    print("No forbidden words found")
}



/*
run:

Forbidden word detected

*/

 



answered Dec 27, 2025 by avibootz
0 votes
import Foundation

func containsForbidden(_ text: String, forbidden: Set<String>) -> Bool {
    let regex = try! NSRegularExpression(pattern: "[a-z0-9]+")
    let range = NSRange(text.startIndex..., in: text.lowercased())

    let words = regex.matches(in: text.lowercased(), range: range)
        .compactMap { Range($0.range, in: text.lowercased()) }
        .map { String(text.lowercased()[$0]) }

    return !forbidden.isDisjoint(with: words)
}

let text = "This text contains a badword inside"
let forbidden: Set<String> = ["badword", "evil", "kill", "nasty", "terrible"]

print(containsForbidden(text, forbidden: forbidden)
      ? "Forbidden word detected"
      : "No forbidden words found")



/*
run:

Forbidden word detected

*/

 



answered Dec 27, 2025 by avibootz

Related questions

...