En Objective C, on pourrait faire ce qui suit pour vérifier les chaînes:
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}
Comment détecter les chaînes vides dans Swift?
Réponses:
Il existe maintenant la capacité intégrée de détecter une chaîne vide avec
.isEmpty
:Documentation de pré-version Apple: "Chaînes et caractères" .
la source
Un moyen concis de vérifier si la chaîne est nulle ou vide serait:
la source
if let myString = myString where !myString.isEmpty { ... }
Je réécris complètement ma réponse ( encore ). Cette fois, c'est parce que je suis devenu fan de la
guard
déclaration et du retour anticipé . Cela donne un code beaucoup plus propre.Chaîne non facultative
Vérifiez la longueur zéro.
Si l'
if
instruction réussit, vous pouvez utiliser la chaîne en toute sécurité en sachant qu'elle n'est pas vide. S'il est vide, la fonction reviendra tôt et rien après cela n'a d'importance.Chaîne facultative
Vérifiez la longueur nulle ou nulle.
Cela déballe l'option facultative et vérifie qu'elle n'est pas vide en même temps. Après avoir transmis l'
guard
instruction, vous pouvez utiliser en toute sécurité votre chaîne non vide non encapsulée.la source
Dans Xcode 11.3 swift 5.2 et versions ultérieures
Utilisation
Exemple
Si vous voulez ignorer les espaces blancs
la source
Voici comment je vérifie si la chaîne est vide. Par «vide», j'entends une chaîne qui est vide ou qui ne contient que des caractères d'espace / nouvelle ligne.
Comment utiliser:
la source
Vous pouvez également utiliser une extension facultative pour ne pas avoir à vous soucier du déballage ou de l'utilisation
== true
:Remarque: lorsque vous appelez ceci sur une option, assurez-vous de ne pas l'utiliser,
?
sinon cela nécessitera toujours un déballage.la source
optionalString?isBlank
car il doit être déballé.currentIncident.priority?.description.isBlank
. Says:Value of optional type 'Bool?' not unwrapped; did you mean to use '!' or '?'?
. Je dois faire ce(currentIncident.priority?.description ?? "").isBlank
qui rend les extensions un peu inutiles. Swift 4.1.priority
c'est l'option là-bas. Si justedescription
était facultatif, cela fonctionnerait, mais vous ne pouvez pas contourner un objet parent facultatif comme ça (parce que sipriority
est nul, alors il n'a même pas dedescription
propriété pour vérifier le vide en premier lieu).Pour faire le contrôle de zéro et la longueur simultanément Swift 2.0 et iOS 9, vous pouvez utiliser
la source
isEmpty fera ce que vous pensez qu'il fera, si string == "", il retournera true. Certaines des autres réponses indiquent une situation où vous avez une chaîne facultative.
VEUILLEZ utiliser le chaînage facultatif !!!!
Si la chaîne n'est pas nulle, isEmpty sera utilisé, sinon ce ne sera pas le cas.
Ci-dessous, la chaîne optionalString ne sera PAS définie car la chaîne est nulle
Évidemment, vous n'utiliseriez pas le code ci-dessus. Les gains proviennent de l'analyse JSON ou d'autres situations similaires dans lesquelles vous avez une valeur ou non. Cela garantit que le code sera exécuté s'il y a une valeur.
la source
Vérifier vérifier uniquement les espaces et les caractères de retour à la ligne dans le texte
en utilisant
la source
Pour les chaînes facultatives, que diriez-vous:
la source
la source
Qu'en est-il de
la source
Je peux recommander d'ajouter une petite extension à String ou Array qui ressemble à
Avec lui, vous pouvez écrire du code plus facile à lire. Comparez ces deux lignes
et
C'est facile à rater ! signez au début de la première ligne.
la source
Vous pouvez utiliser cette extension:
puis utilisez-le comme ceci:
la source