framework examples documentacion apple ios swift ctype

examples - uikit ios swift



¿Cómo puedo verificar si una cadena contiene caracteres de espacio en blanco/alfanumérico/etc? (4)

¿Cómo se puede usar la biblioteca "ctype.h" en Swift para poder usar isAlpha o isSpace en los caracteres? ¿O hay una mejor manera, Swift, de hacerlo?

Esta pregunta se responde, pero no parece funcionar: Swift: cómo saber si la letra es alfanumérica o dígito

No especifica cómo importar la biblioteca. ¿Podría alguien apuntarme en la dirección correcta?

Esto es lo que tengo hasta ahora:

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") } }


Creé una extensión de String que hace exactamente esto, espero que sea útil.

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 } } }


Esta respuesta funciona con campos de texto. Me estaba volviendo loco tratando de buscar espacios en blanco en un campo de UI sin buscar el contenido de la cadena. Esto funciona para UItextfields:

Swift 4:

if (textField.text?.contains(" "))!{ print("Has space") }else{ print("Does not have space") }

Esto es para una cadena regular, también en swift 4

if string.contains(" "){ print("Has space") }else{ print("Does not have space") }


Extensión más corta (Swift 4.1)

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

Puede cambiar el .whitespacesAndNewlines con cualquier otro conjunto de CharacterSet como este:

extension String { var containsDigits : Bool { return(self.rangeOfCharacter(from: CharacterSet.decimalDigits) != nil) } }


Use NSCharacter en toda la cadena, no carácter por carácter:

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") }

Salida:

whitespace found