2010-05-28 4 views
1

Dans mon projet, j'ai une chaîne supposer NSString * str = @ "$ 120.00"; De la chaîne ci-dessus je reçois chaque caractère individuel, Maintenant je dois obtenir tous les integres dans la chaîne i.e, $ n'est pas un nombre entier, donc je ne veux pas que "1" est un entier que je veux comme ça. Comment puis-je faire cela peut me aiderComment vérifier qu'un caractère est un alphabet ou un entier

Merci

+1

Y a-t-il une raison générale à cela, ou essayez-vous simplement quelque chose pour vous amuser? Si vous voulez la valeur numérique de la chaîne formatée, il y a de meilleurs moyens que de le faire manuellement ... – ivans

+0

Vous devriez clarifier cette question un peu. Voulez-vous supprimer les caractères non numériques, créer un ensemble de tous les caractères numériques présents dans la chaîne ou trouver le nombre représenté dans la chaîne sous forme d'entier? –

Répondre

2

Vous pouvez obtenir un jeu de caractères pour les chiffres, puis l'utiliser pour vérifier vos personnages:

NSCharacterSet* digits = [NSCharacterSet decimalDigitCharacterSet]; 
if([digits characterIsMember: yourCharacter]) { 
... 
} 
1

La réponse de Unbeli est probablement le meilleur pour ce que cela ressemble à ce que vous voulez, qui est un tableau de caractères qui représentent des entiers.

Cependant, si votre objectif final est de rassembler tous les caractères entiers que vous avez extraits dans un nombre, je suggérerais des expressions régulières. Cocoa n'a pas de wrapper regex pour le remplacement, mais vous devriez pouvoir utiliser le code standard C <regex.h>; Obj-C est un sur-ensemble après tout.

Mais cela vous donnerait 12000 dans votre exemple, par opposition à 120 qui pourrait être ce que vous recherchez. Dans ce cas, je vais essayer [str intValue].

0
// gcc foo.m -framework Foundation 
int main() 
{ 
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; 
    NSString* str = @"$ 120.00"; 
    const char* p = [str cStringUsingEncoding:[NSString defaultCStringEncoding]]; 
    while(*p) 
    { 
     if(isdigit(*p)) 
     { 
      NSLog(@"%c", *p); 
     } 
     p++; 
    } 
    [pool release]; 
} 
Questions connexes