web-dev-qa-db-fra.com

Vérifier la chaîne vide dans Swift?

Dans l’objectif C, vous pouvez procéder comme suit pour rechercher des chaînes:

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

Comment détecte-t-on les chaînes vides dans Swift?

132
chrisjlee

Il existe maintenant la possibilité intégrée de détecter une chaîne vide avec .isEmpty:

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

Documentation préliminaire Apple: "Chaînes et caractères" .

209
chrisjlee

Une manière concise de vérifier si la chaîne est nulle ou vide serait:

var myString: String? = nil

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

Je suis complètement en train de réécrire ma réponse ( encore ). Cette fois, c’est parce que je suis fan de la déclaration guard et early return . Cela rend le code beaucoup plus propre.

Chaîne non facultative

Vérifiez la longueur zéro.

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)

Si l'instruction if réussit, vous pouvez utiliser la chaîne en toute sécurité, sachant qu'elle n'est pas vide. S'il est vide, la fonction reviendra plus tôt et rien après ne sera important.

Chaîne facultative

Vérifiez que la longueur est nulle ou nulle.

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)

Cela ouvre l’option et vérifie qu’elle n’est pas vide en même temps. Après avoir passé l'instruction guard, vous pouvez utiliser votre chaîne non vide non encapsulée en toute sécurité.

38
Suragch

Dans Xcode 10 Swift 4.2

Utilisation

var isEmpty: Bool { get } 

Exemple

let lang = "Swift 4"

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

Voici comment je vérifie si la chaîne est vide. Par "blanc", j'entends une chaîne vide ou contenant uniquement des caractères d'espacement/de nouvelle ligne.

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

Comment utiliser:

MyString.blank(" ") // true
23
Evgenii

Pour effectuer la vérification et la longueur simultanément

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

Vous pouvez également utiliser une extension facultative pour ne pas avoir à vous soucier de décompresser ou d'utiliser == 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
        }
    }
}

Remarque: lorsque vous appelez cette option (facultatif), veillez à ne pas utiliser ? sinon vous devrez tout de même décompresser.

6
John Montgomery

isEmpty fera ce que vous pensez, si string == "", il retournera true . Certaines des autres réponses pointent vers une situation dans laquelle vous avez une chaîne facultative.

VEUILLEZ utiliser Chaînage optionnel !!!!

Si la chaîne n'est pas nil, isEmpty sera utilisé, sinon ce ne sera pas le cas.

En dessous, la chaîne optionalString ne sera PAS définie car la chaîne est nil.

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

Évidemment, vous n'utiliseriez pas le code ci-dessus. Les gains proviennent de l'analyse JSON ou d'autres situations similaires où vous avez une valeur ou non. Cela garantit que le code sera exécuté s'il y a une valeur.

4
Swiftly

Pour les chaînes facultatives que diriez-vous:

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

Vérifier que seuls les espaces et les caractères de nouvelle ligne du texte

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

en utilisant 

if text.isBlank
{
  //text is blank do smth
}
1
UnRewa
if myString?.startIndex != myString?.endIndex {}
0
IceMan

Qu'en est-il de

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