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?
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" .
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")
}
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.
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.
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é.
Utilisation
var isEmpty: Bool { get }
Exemple
let lang = "Swift 4"
if lang.isEmpty {
print("Empty string")
}
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
Pour effectuer la vérification et la longueur simultanément
if(yourString?.characters.count > 0){}
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.
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.
Pour les chaînes facultatives que diriez-vous:
if let string = string where !string.isEmpty
{
print(string)
}
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
}
if myString?.startIndex != myString?.endIndex {}
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")
}