2015-11-18 158 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充滿了多汁的味道。

相關問題