2017-04-14 1 views

Répondre

0

L'une des nombreuses façons de le faire: utiliser une expression régulière (NSRegularExpression) qui correspond à une lettre minuscule (ou non une lettre majuscule si vous avez non-lettres dans la chaîne) suivi d'une majuscule l'un et les remplace par les deux caractères correspondants avec un espace entre eux - à savoir exactement comment vous résoudre ce problème dans un éditeur de texte décent (textwrangler et.al.)

Si vous avez du mal à implémenter le code, posez une nouvelle question en indiquant votre code et votre explication. vos problèmes.

0

Solution simple avec une expression régulière, il ne considère que les caractères majuscules A-Z.

Le motif regex (?<!^)[A-Z] recherche un seul caractère majuscule qui n'est pas le début de la chaîne.

NSMutableString *camelCaseString = @"ThisIsASentence".mutableCopy; 
NSString *pattern = @"(?<!^)[A-Z]"; 
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil]; 
[regex replaceMatchesInString:camelCaseString options:0 range:NSMakeRange(0, camelCaseString.length) withTemplate:@" $0"]; 
NSLog(@"%@", camelCaseString); 
+0

Merci pour la suggestion, mais regex sont quelque chose que je voudrais éviter pour une chose si simple. –

+0

Vous avez écrit * élégant * et * propre * ;-) – vadian

+0

Enfin, je viens de trouver de cette façon http://stackoverflow.com/questions/1918972/camelcase-to-underscores-and-back-in-objective-c semble faire le travail –