objective-c - 如何检测字符串在Obj-C里是否为空?
大家讲道理
大家讲道理 2017-04-21 11:18:49
0
1
495

如何检测NSString在Objective-C里是否为空?

原问题:How do I test if a string is empty in Objective C?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(1)
Peter_Zhu

Marc Charbonneau
Vous pouvez vérifier si [string length] == 0. Cela vérifiera s'il s'agit d'une chaîne valide mais vide (@"") et si elle est nulle. Parce que l'appel de length sans valeur renverra également 0.


Matt G
La réponse ci-dessus est correcte. Mais j'aimerais profiter de cette occasion pour présenter isEmpty résumé par Wil Shipley, qu'il a partagé sur son blog :

static inline BOOL IsEmpty(id thing) {
return thing == nil
|| ([thing respondsToSelector:@selector(length)]
&& [(NSData *)thing length] == 0)
|| ([thing respondsToSelector:@selector(count)]
&& [(NSArray *)thing count] == 0);
}

La première méthode est efficace, mais elle ne fonctionnera pas si la chaîne contient des espaces (@" "). Les espaces doivent donc être dégagés avant les tests.
Le code suivant supprime tous les espaces des deux côtés de la chaîne

[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];

Une bonne idée est de définir une macro pour ne pas avoir à taper cette longue chaîne de code :

#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]

Vous pouvez désormais utiliser :

NSString *emptyString = @"   ";
if ( [allTrim( emptyString ) length] == 0 ) NSLog(@"Is empty!");

Rob
L'une des meilleures solutions que j'ai vues (meilleure que celle de Matt G) est cette fonction en ligne améliorée, que j'ai trouvée dans les rapports Git Hub :

// Check if the "thing" pass'd is empty
static inline BOOL isEmpty(id thing) {
    return thing == nil
    || [thing isKindOfClass:[NSNull class]]
    || ([thing respondsToSelector:@selector(length)]
        && [(NSData *)thing length] == 0)
    || ([thing respondsToSelector:@selector(count)]
        && [(NSArray *)thing count] == 0);
}

utilisateur238824
Vous feriez mieux d'utiliser cette fonction :

@implementation NSString (Empty)

    - (BOOL) empty{
        return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0);
    }

@end

chown
Une autre option consiste à utiliser isEqualToString pour vérifier s'il est égal à @"", comme ceci :

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

Jim Thio
Celui-là que j'utilise :

@implementation NSObject (AdditionalMethod)
-(BOOL) isNotEmpty
{
    return !(self == nil
    || [self isKindOfClass:[NSNull class]]
    || ([self respondsToSelector:@selector(length)]
        && [(NSData *)self length] == 0)
    || ([self respondsToSelector:@selector(count)]
        && [(NSArray *)self count] == 0));

};
@end 

Le problème est que si self n'a aucune valeur, cette fonction ne sera jamais appelée. Il renverra false, ce qui est obligatoire.


Samir Jwarchan
Utilisez simplement l’une des conditions if else suivantes :
Méthode 1 :

<strong>if([yourString isEqualToString:@""]){
        // yourString is empty.
    }
    else {
        // yourString has some text on it.
    } </strong>

Méthode 2 :

if([yourString length] == 0){
    // Empty yourString
}
else {
    // yourString is not empty
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!