2014-07-22 4 views
16

Come è possibile utilizzare la libreria "ctype.h" in Swift per poter utilizzare isAlpha o isSpace sui caratteri? O c'è un modo migliore, rapido, per farlo?Come posso verificare se una stringa contiene caratteri di spazio/alfanumerici/ecc.?

tale questione venga risolta, ma non sembra funzionare: Swift: how to find out if letter is Alphanumeric or Digit

Non specifica come importare la libreria. Potrebbe qualcuno indicarmi la giusta direzione?

Ecco quello che ho finora:

extension String { 
    subscript (i : Int) -> String { 
     return String(Array(self)[i]) 
    } 
} 

let whitespace = NSCharacterSet.whitespaceCharacterSet() 

let phrase = "Test case" 

for var i=0; i<countElements(phrase); i++ { 
    if whitespace.characterIsMember(phrase[i]) { //error 
     println("char is whitespace") 
    } 
} 
+0

E 'una buona idea di utilizzare metodi che non supportano Unicode sulle stringhe Swift? – trojanfoe

+0

Sembra che le funzioni (solo ASCII) siano Alpha(), isDigit() siano state rimosse da Swift. Ma il metodo basato su NSCharacterSet da quella risposta dovrebbe ancora funzionare. –

+0

Sto tentando di usarlo (NSCharacterSet), ma continua a dire "il carattere non è convertibile in unichar". – hazrpg

risposta

28

Usa NSCharacter su tutta la stringa, non carattere per carattere:

let whitespace = NSCharacterSet.whitespaceCharacterSet() 

let phrase = "Test case" 
let range = phrase.rangeOfCharacterFromSet(whitespace) 

// range will be nil if no whitespace is found 
if let test = range { 
    println("whitespace found") 
} 
else { 
    println("whitespace not found") 
} 

uscita:

whitespace found 
4

Ho creato un'estensione di stringa che fa esattamente questo, spero sia utile.

extension String { 

    func containsWhiteSpace() -> Bool { 

     // check if there's a range for a whitespace 
     let range = self.rangeOfCharacterFromSet(.whitespaceCharacterSet()) 

     // returns false when there's no range for whitespace 
     if let _ = range { 
      return true 
     } else { 
      return false 
     } 
    } 
} 
3

estensione Shorter (swift 3)

extension String { 
    var containsWhitespace : Bool { 
     return(self.rangeOfCharacter(from: .whitespacesAndNewlines) != nil) 
    } 
}