2015-11-18 84 views
0

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

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

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

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

这是我的第一语言。

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

    var isCleanText:Bool = true 

    let dirtyCharacters: String = "~`[email protected]#$%^&*()_+=-{}[]|;\'<>,./?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)

+0

有一个'filter()'函数,查看它。 –

回答

0

使用的NSCharacterSet握住你的“脏”字:

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

然后,你可以检测到没有任何像这样的“脏”字:

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

你可以过滤掉所有这样的“脏”字符:

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

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

相关问题