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



в Objective C можно сделать следующее, чтобы проверить строки:



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


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

558   12  

12 ответов:

теперь есть встроенная возможность обнаружения пустой строки с .isEmpty:

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

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

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

var myString: String? = nil

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

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

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

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

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 оператор, вы можете безопасно использовать развернутую непустую строку.

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

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

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

MyString.blank(" ") // true

в Xcode 10 swift 4.2

использовать

var isEmpty: Bool { get } 

пример

let lang = "Swift 4"

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

чтобы сделать нулевую проверку и длину одновременно Swift 2.0 и iOS 9 и далее вы можете использовать

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

вы также можете использовать дополнительное расширение, поэтому вам не придется беспокоиться о разворачивании или с помощью == 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
        }
    }
}

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

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

пожалуйста, используйте Дополнительные Цепочки!!!!

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

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

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

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

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

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

используя

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

для дополнительных строк, как о:

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

а как же

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

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

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

Comments

    Ничего не найдено.