Проверьте, содержит ли Swift текстовое поле без пробелов
Это расширение, а не дубликат Как проверить, пусто ли текстовое поле или нет в быстром
Данный ответ,
@IBAction func Button(sender: AnyObject) {
if textField1.text != "" {
// textfield 1
}
}
не работает для меня, т.е. if-loop запускается, даже если в текстовое поле ничего не вводится. (Я изменил его из оригинала, потому что я ищу, чтобы запускать код только тогда, когда поле содержит текст).
Второй ответ
@IBAction func Button(sender: AnyObject) {
if !textField1.text.isEmpty{
}
}
приближается, но он принимает строки типа " "
как непустые. Я мог бы создать что-то сам, но есть ли функция, которая проверяет, содержит ли строка что-то иное, чем пробелы?
Ответы
Ответ 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
}
}