2009-10-19 7 views
-1

Je souhaite séparer une chaîne avec l'occurrence des majuscules. Supposons que j'ai une chaîne comme « IAmABoy » .Je veux que les chaînes résultantes commeComment diviser une chaîne avec le caractère majuscule dans l'iPhone

I 
Am 
A 
Boy. 

Comment faire cela? Existe-t-il un exemple de code? S'il vous plaît montrez-moi le moyen de le faire.

+1

N'ajoutez pas de réponses s'il s'agit de commentaires. Au lieu de cela, utilisez le lien "ajouter un commentaire" pour ajouter des commentaires à une réponse existante. –

Répondre

1

Qu'en est-il de quelque chose de simple comme une simple répétition de chaque caractère? En supposant inputString et outputString sont NSStrings quelque chose comme cela devrait fonctionner:

NSUInteger length = [inputString length]; 
    for (NSUInteger i = 0; i < length; i++) 
    { 
    char c = [inputString characterAtIndex:i]; 
    if (i > 0 && c >= 65 && c <=90) 
    { 
     [outputString appendFormat:@"\n%c", c]; 
    } 
    else 
    { 
     [outputString appendFormat:@"%c", c]; 
    } 
    } 
0

Je vous suggère d'importer une bibliothèque Regex ou de consulter NSScanner.

0

Essayez d'utiliser -rangeOfCharacterFromSet: et diviser la chaîne en fonction de l'endroit où vous trouverez les caractères majuscules.

1

Thanx Carson pour vous reply.But la ligne

[outputString appendFormat:@"\n%c", c];

througing certains ont exception.I modifier votre code au suivant et ça semble marcher pour moi.


NSString *[email protected]"IAmABoy"; NSString *outputString; NSString *[email protected]""; NSUInteger length = [inputString length]; for (NSUInteger i = 0; i < length; i++) { char c = [inputString characterAtIndex:i]; if (i > 0 && c >= 65 && c <=90) { //[outputString appandFormate:@"\n%c", c]; outputString=[NSString stringWithFormat:@"%c", c]; string = [NSString stringWithFormat:@"%@%@%@",string,@" ",outputString]; NSLog(@"%@", string); } else { //[outputString appendFormat:@"%c", c]; outputString=[NSString stringWithFormat:@"%c", c]; //NSLog(@"%@",outputString); string = [NSString stringWithFormat:@"%@%@",string,outputString]; NSLog(@"%@", string); } }


Thanx encore une fois à tous pour votre aide et coopérations.

0

extension String { public func stringFromPascalCase() -> String { return self.characters.enumerate().map { (String($1).componentsSeparatedByCharactersInSet(.uppercaseLetterCharacterSet()).joinWithSeparator("").isEmpty && $0 > 0) ? " \($1)" : "\($1)" }.joinWithSeparator("") } }

cela devrait faire l'affaire.

let x = "EastMayerDrive".stringFromPascalCase() print(x) /// East Mayer Drive

Questions connexes