有没有更好的方法来大小写匹配脏字符?

Is there a better way to case match dirty characters?

我正在用 Swift 2.0 编写一个 iPhone 应用程序,我不希望人们能够在文本字段中输入脏字符。我正在尝试将此代码包装到一个函数中,并 return 一个 bool 以供稍后在应用程序中使用。到目前为止,代码在 playground 中完成了它应该做的事情,而没有被包装在一个函数中。但是,当我将它包装在一个函数中时,游乐场不喜欢该代码。有没有更简单的方法来完成我正在做的事情?

我是 Swift 2.0 的新手,已阅读编程指南,但不确定如何在 SDK/API 中找到我需要的函数。我以前读过苹果的文档,但我一直不明白如何使用它。我似乎永远无法在其中找到我正在寻找的信息。

必须有一种方法来避免进行数百次传球。

我也想看看以后如何使用 return 值。编程指南没有给出很好的真实示例。

这是我的第一语言。

    var randomText: String = "D*rtyCh4ract3rs!#"

    var isCleanText:Bool = true

    let dirtyCharacters: String = "~`!@#$%^&*()_+=-{}[]|;\'<>,./?1234567890"

    var dirtyStringArray = [String]()

    var boolCountArray = [Bool]()

    for singleCharacter in dirtyCharacters.characters {

        dirtyStringArray.append("\(singleCharacter)")

        for testCase in dirtyStringArray {

        if (randomText as NSString).containsString(testCase).boolValue {

            boolCountArray.append((randomText as NSString).containsString(testCase).boolValue)

            if boolCountArray.count > 0 {

                isCleanText = false

                print(boolCountArray)

                break

            } else {

                isCleanText = true
            }
        }
    }
}

打印(isCleanText)

使用 NSCharacterSet 来容纳你的“肮脏”角色:

let dirtyCharacters = NSCharacterSet(charactersInString: "~`!@#$%^&*()_+=-{}[]|;\'<>,./?1234567890")

然后您可以像这样检测不存在任何“脏”字符:

let isCleanText = randomText.rangeOfCharacterFromSet(dirtyCharacters) == nil

您可以像这样过滤掉所有“脏”字符:

let cleanedText = randomText.componentsSeparatedByCharactersInSet(dirtyCharacters)
    .joinWithSeparator("")

NSString Class Reference 塞满了多汁的小点心。