2011-07-22 4 views
2

Tous,NSRegularExpression pour extraire le texte

J'ai un dictionnaire avec deux clés et des valeurs. Je dois en extraire des morceaux et les placer dans des cordes séparées.

{ 
     IP = "192.168.17.1"; 
     desc = "VUWI-VUWI-ABC_Dry_Cleaning-R12-01"; 
} 

Voilà à quoi ressemble le dictionnaire lorsque j'appelle description.

Je veux la nouvelle sortie soit comme ceci:

NSString *IP = @"192.168.17.1"; 
NSString *desc = @"ABC Dry Cleaning"; //note: I need to get rid of the underscores 
NSString *type = @"R"; 
NSString *num = @"12"; 
NSString *ident = @"01"; 

Comment pourrais-je atteindre cet objectif?

J'ai lu les documents du développeur Apple sur NSRegularExpression mais j'ai du mal à comprendre. Je suis sûr qu'une fois que j'aurai de l'aide une fois ici, je pourrai me débrouiller dans le futur, j'ai juste besoin de commencer.

Merci d'avance.

Répondre

1

Ok, donc d'abord, vous devez obtenir l'objet associé à chaque touche:

NSString *ip = [dic objectForKey:@"IP"]; //Btw, you shouldn't start a variable's name with a capital letter. 
NSString *tempDesc = [dic objectForKey:@"desc"]; 

Alors, ce que je ferais est divisé la chaîne en tempDesc, en fonction du caractère -.

NSArray *tmpArray = [tempDesc componentsSeparatedByString:@"-"]; 

Il vous suffit d'obtenir les chaînes ou les sous-chaînes qui vous intéressent, et les reformater au besoin:

NSString *desc = [[tmpArray objectAtIndex:2] stringByReplacingOccurrencesOfString:@"_" withString:@" "]; 
NSString *type = [[tmpArray objectAtIndex:3] substringToIndex:1]; 
NSString *num = [[tmpArray objectAtIndex:3] substringFromIndex:1]; 
NSString *ident = [tmpArray objectAtIndex:4]; 

Comme vous pouvez le voir, cela fonctionne parfaitement sans utiliser NSRegularExpression.

+0

C'est parfait! Merci beaucoup. Et je serai sûr de le faire "ip";) – Baub

Questions connexes