209 votes

Comment vérifier si une NSString commence par un certain caractère ?

Comment vérifier si une NSString commence par un certain caractère (le caractère *).

L'* est un indicateur du type de cellule. J'ai donc besoin du contenu de cette NSString sans l'*, mais j'ai besoin de savoir si l'* existe.

449voto

Rob Keniger Points 32985

Vous pouvez utiliser le -hasPrefix: méthode de NSString :

Objective-C :

NSString* output = nil;
if([string hasPrefix:@"*"]) {
    output = [string substringFromIndex:1];
}

Swift :

var output:String?
if string.hasPrefix("*") {
    output = string.substringFromIndex(string.startIndex.advancedBy(1))
}

12voto

Chris Long Points 1821

Vous pouvez utiliser :

NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
     newString = [myString substringFromIndex:1];
}

8voto

Iggy Points 1277

hasPrefix fonctionne particulièrement bien. par exemple, si vous cherchez une url http dans un fichier NSString vous utiliseriez componentsSeparatedByString pour créer un NSArray et l'itération du tableau en utilisant hasPrefix pour trouver les éléments qui commencent par http.

NSArray *allStringsArray = 
   [myStringThatHasHttpUrls componentsSeparatedByString:@" "]

for (id myArrayElement in allStringsArray) {
    NSString *theString = [myArrayElement description];
    if ([theString hasPrefix:@"http"]) {
        NSLog(@"The URL  is %@", [myArrayElement description]);
    }

}

hasPrefix renvoie une valeur booléenne qui indique si une chaîne de caractères donnée correspond aux caractères de début du récepteur.

- (BOOL)hasPrefix:(NSString *)aString, 

paramètre aString est une chaîne de caractères que vous recherchez La valeur de retour est YES si aString correspond aux premiers caractères du récepteur, sinon NO. Renvoie NO si aString est vide.

4voto

outis Points 39377

Utilice characterAtIndex: . Si le premier caractère est un astérisque, utilisez substringFromIndex: pour obtenir la chaîne sans '*'.

4voto

Chuck Points 138930
NSString *stringWithoutAsterisk(NSString *string) {
    NSRange asterisk = [string rangeOfString:@"*"];
    return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X