How can I check to see if a string contains charac

2019-03-12 12:20发布

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?

This question is answered, but it doesn't seem to work: Swift: how to find out if letter is Alphanumeric or Digit

It doesn't specify how to import the library. Could someone point me in the right direction?

Here's what I've got so far:

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

标签: ios swift ctype
4条回答
疯言疯语
2楼-- · 2019-03-12 12:37

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
查看更多
狗以群分
3楼-- · 2019-03-12 12:49

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

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
        }
    }
}
查看更多
姐就是有狂的资本
4楼-- · 2019-03-12 12:49

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")
    }
查看更多
啃猪蹄的小仙女
5楼-- · 2019-03-12 12:51

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)
    }
}
查看更多
登录 后发表回答