How can I check to see if a string contains characters of whitespace/alphanumeric/etc?

后端 未结 5 782
执念已碎
执念已碎 2021-02-04 02:19

How can you use the \"ctype.h\" library in Swift to be able to use isAlpha or isSpace on characters? Or is there a better, Swift, way of doing it?

相关标签:
5条回答
  • 2021-02-04 02:53

    This answer works with text fields. I was going crazy trying to search for whitespace on a UItextfield without searching the string content of it. This works for UItextfields:

    Swift 4:

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

    This is for a regular string, also in swift 4

        if string.contains(" "){
            print("Has space")
        }else{
            print("Does not have space")
        }
    
    0 讨论(0)
  • 2021-02-04 03:05

    Use NSCharacter on the entire string,not character-by-character:

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

    Output:

    whitespace found
    
    0 讨论(0)
  • 2021-02-04 03:08

    Shorter extension (swift 4.1)

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

    You can change the .whitespacesAndNewlines with any other CharacterSet like this:

    extension String {
        var containsDigits : Bool {
            return(self.rangeOfCharacter(from: CharacterSet.decimalDigits) != nil)
        }
    }
    
    0 讨论(0)
  • 2021-02-04 03:18

    I created a String extension that does exactly this, hope it's useful.

    extension String {
        func containsWhitespaceAndNewlines() -> Bool {
            return rangeOfCharacter(from: .whitespacesAndNewlines) != nil
        }
    }
    
    // Usage
    "hello, world!".containsWhitespaceAndNewlines() // true
    "hello,world!".containsWhitespaceAndNewlines() // false
    
    0 讨论(0)
  • 2021-02-04 03:19

    For Swift 5

    extension String {
    
        func containsWhiteSpace() -> Bool {
    
            // check if there's a range for a whitespace
            let range = self.rangeOfCharacter(from: .whitespacesAndNewlines)
    
            // returns false when there's no range for whitespace
            if let _ = range {
                return true
            } else {
                return false
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题