Je cherche un moyen élégant (au moins propre) d'ajouter de l'espace entre chaque mot dans une phrase chameau.Ajouter un espace dans la chaîne avant chaque mot
Exemple ThisIsASentence
doit être transformé en This Is A Sentence
Je cherche un moyen élégant (au moins propre) d'ajouter de l'espace entre chaque mot dans une phrase chameau.Ajouter un espace dans la chaîne avant chaque mot
Exemple ThisIsASentence
doit être transformé en This Is A Sentence
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.
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);
Merci pour la suggestion, mais regex sont quelque chose que je voudrais éviter pour une chose si simple. –
Vous avez écrit * élégant * et * propre * ;-) – vadian
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 –