Подтвердить что ты не робот

Проверьте, содержит ли Swift текстовое поле без пробелов

Это расширение, а не дубликат Как проверить, пусто ли текстовое поле или нет в быстром

Данный ответ,

@IBAction func Button(sender: AnyObject) {
    if textField1.text != ""  {
        // textfield 1 
    }
}

не работает для меня, т.е. if-loop запускается, даже если в текстовое поле ничего не вводится. (Я изменил его из оригинала, потому что я ищу, чтобы запускать код только тогда, когда поле содержит текст).

Второй ответ

@IBAction func Button(sender: AnyObject) {
    if !textField1.text.isEmpty{

    }
}

приближается, но он принимает строки типа " " как непустые. Я мог бы создать что-то сам, но есть ли функция, которая проверяет, содержит ли строка что-то иное, чем пробелы?

4b9b3361

Ответ 1

Вы должны обрезать строку из пробельных символов и проверить, не пусто ли она:

if !textField1.text.trimmingCharacters(in: .whitespaces).isEmpty {
    // string contains non-whitespace characters
}

Вы также можете использовать CharacterSet.whitespacesAndNewlines для удаления символов новой строки.

Ответ 2

Ниже приведенное мною расширение, которое работает хорошо, особенно для тех, которые исходят из фона .NET:

extension String {
    func isEmptyOrWhitespace() -> Bool {

        if(self.isEmpty) {
            return true
        }

        return (self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) == "")
    }
}

Ответ 3

akashivskyy answer в Swift 3.0:

let whitespaceSet = CharacterSet.whitespaces
if !str.trimmingCharacters(in: whitespaceSet).isEmpty {
  // string contains non-whitespace characters
}

Ответ 4

extension StringProtocol where Index == String.Index {
    var isEmptyField: Bool {
        return trimmingCharacters(in: .whitespaces) == ""
    }
}


if yourTextField.text.isEmptyField {
    // Field is empty
} else {
    // Field is NOT empty
}

Ответ 5

Ответ в кратком 4:

extension String {
    func isEmptyOrWhitespace() -> Bool {
        if(self.isEmpty) {
            return true
        }
        return (self.trimmingCharacters(in: NSCharacterSet.whitespaces) == "")
    }
}

Ответ 6

Ответ в Swift 3.0

if stringValue.trimmingCharacters(in: CharacterSet.whitespaces).isEmpty
{}

Ответ 7

Swift 4.2

Расширение для строки пустое или пробел

extension String {
    func isEmptyOrWhitespace() -> Bool {

        // Check empty string
        if self.isEmpty {
            return true
        }
        // Trim and check empty string
        return (self.trimmingCharacters(in: .whitespaces) == "")
    }
}

Оригинальный код постера проверяет text в текстовом поле, что является необязательным. Поэтому ему понадобится код для проверки необязательных строк. Итак, давайте создадим функцию для обработки этого тоже:

Расширение для необязательной строки - ноль, пусто или пробел

extension Optional where Wrapped == String {
    func isEmptyOrWhitespace() -> Bool {
        // Check nil
        guard let this = self else { return true }

        // Check empty string
        if this.isEmpty {
            return true
        }
        // Trim and check empty string
        return (this.trimmingCharacters(in: .whitespaces) == "")
    }
}

Ответ 8

Ответ в Swift 3. *, рассматривает новые строки, вкладки

extension String {

    var containsNonWhitespace: Bool {
        return !self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
    }

}

Ответ 9

Swift 4.2

@IBAction func checkSendButton(_ sender: UITextField) {
    if((sender.text?.count)! > 0 && !(sender.text!.trimmingCharacters(in: .whitespaces)).isEmpty){
        self.sendButton.isEnabled = true
    }
    else{
        self.sendButton.isEnabled = false
    }
}