Проверить пустую строку в Swift?

В Objective C для проверки строк можно сделать следующее:

if ([myString isEqualToString:@""]) {
    NSLog(@"myString IS empty!");
} else {
    NSLog(@"myString IS NOT empty, it is: %@", myString);
}

Как обнаруживать пустые строки в Swift?

Ответ 1

Теперь появилась встроенная способность обнаруживать пустую строку с помощью .isEmpty:

if emptyString.isEmpty {
    print("Nothing to see here")
}

Документация Apple перед выпуском: "Строки и символы" .

Ответ 2

Краткий способ проверить, является ли строка нулевой или пустой:

var myString: String? = nil

if (myString ?? "").isEmpty {
    print("String is nil or empty")
}

Ответ 3

Я полностью переписываю свой ответ (снова). На этот раз это потому, что я стал поклонником guard statement и раннее возвращение. Это делает намного более чистый код.

Необязательная строка

Проверьте нулевую длину.

let myString: String = ""

if myString.isEmpty {
    print("String is empty.")
    return // or break, continue, throw
}

// myString is not empty (if this point is reached)
print(myString)

Если инструкция if проходит, вы можете безопасно использовать строку, зная, что она не пуста. Если он пуст, функция вернется раньше и ничего не изменится.

Необязательная строка

Проверьте нулевую или нулевую длину.

let myOptionalString: String? = nil

guard let myString = myOptionalString, !myString.isEmpty else {
    print("String is nil or empty.")
    return // or break, continue, throw
}

// myString is neither nil nor empty (if this point is reached)
print(myString)

Это разворачивает опцию и проверяет, что она не пуста в одно и то же время. После передачи инструкции guard вы можете безопасно использовать свою развернутую непустую строку.

Ответ 4

В Xcode 10.2 swift 5

использование

var isEmpty: Bool { get } 

пример

let lang = "Swift 5"

if lang.isEmpty {
   print("Empty string")
}

Ответ 5

Вот как я проверяю, является ли строка пустой. Под "пустым" я подразумеваю строку, которая либо пуста, либо содержит только символы пробела/новой строки.

struct MyString {
  static func blank(text: String) -> Bool {
    let trimmed = text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
    return trimmed.isEmpty
  }
}

Как пользоваться:

MyString.blank(" ") // true

Ответ 6

Вы также можете использовать дополнительное расширение, поэтому вам не нужно беспокоиться о развертывании или использовании == true:

extension String {
    var isBlank: Bool {
        return self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
    }
}
extension Optional where Wrapped == String {
    var isBlank: Bool {
        if let unwrapped = self {
            return unwrapped.isBlank
        } else {
            return true
        }
    }
}

Примечание: при вызове этого параметра в необязательном режиме убедитесь, что вы не используете ?, иначе он по-прежнему требует развертывания.

Ответ 7

Выполнять проверку и длину nil одновременно Swift 2.0 и iOS 9 можно использовать

if(yourString?.characters.count > 0){}

Ответ 8

isEmpty будет делать, как вы думаете, будет, если string == "", он вернет true. Некоторые из других ответов указывают на ситуацию, когда у вас есть необязательная строка.

ПОЖАЛУЙСТА, используйте Необязательная цепочка!!!!

Если строка не равна nil, будет использоваться isEmpty, иначе она не будет.

Ниже, optionalString НЕ будет установлен, потому что строка равна nil

let optionalString: String? = nil
if optionalString?.isEmpty == true {
     optionalString = "Lorem ipsum dolor sit amet"
}

Очевидно, вы не использовали бы указанный выше код. Прибыль исходит из разбора JSON или других ситуаций, когда у вас есть ценность или нет. Это гарантирует, что код будет запущен, если есть значение.

Ответ 9

Для необязательных строк:

if let string = string where !string.isEmpty
{
    print(string)
}

Ответ 10

Проверить только пробелы и символы новой строки в тексте

extension String
{
    var  isBlank:Bool {
        return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).isEmpty
    }
}

используя

if text.isBlank
{
  //text is blank do smth
}

Ответ 11

if myString?.startIndex != myString?.endIndex {}

Ответ 12

Что насчет

if let notEmptyString = optionalString where !notEmptyString.isEmpty {
    // do something with emptyString 
    NSLog("Non-empty string is %@", notEmptyString)
} else {
    // empty or nil string
    NSLog("Empty or nil string")
}

Ответ 13

Вот что я использую (работает как для строк, так и для других объектов):

func checkValidityOfData(_ data: Any?, withStringCheck mode: Bool) -> Bool {

    // Check if the data is valid or not.

    if ((data != nil) && !(data is NSNull)) {

        // Check if we need to perform string checks.

        if (mode == true) {

            // Check the input data string.
            let dataCheck = (data as! String).trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)

            // Check if the string is valid.

            if (dataCheck.count > 0) {

                // Ensure the string is not literally "<null>".

                if ((data as! String) == "<null>") {
                    return false
                } else {
                    return true
                }

            } else {
                return false
            }

        } else {
            return true
        }

    } else {
        return false
    }
}