是否有更好的方法来匹配脏字符?

时间:2015-11-18 03:13:28

标签: ios iphone swift2 swift2.1

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

我是Swift 2.0的新手,已阅读编程指南,但我不确定如何在SDK / API中查找我需要的功能。我过去读过Apple的文档,但我还没有理解如何使用它。我似乎无法找到我正在寻找的信息。

必须有一种方法可以防止数百次传球。

我也想看看以后如何使用返回值。编程指南没有给出一个好的现实世界的例子。

这是我的第一语言。

    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)

1 个答案:

答案 0 :(得分:0)

使用NSCharacterSet来保存“脏”字符:

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

然后你可以检测到没有这样的“脏”字符:

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

您可以过滤掉所有“脏”字符,如下所示:

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

NSString Class Reference充满了多汁的味道。