Typed into mail (no guarantee):
NSScanner* scanner = [NSScanner scannerWithString:input]; NSMutableString* output = [NSMutableString string]; NSString* temp; [scanner setCaseSensitive:YES]; while( ![scanner isAtEnd]) { if([scanner scanUpToCharactersFromSet:[NSCharacterSet uppercaseLetterCharacterSet] intoString:&temp]) { [output appendString:temp]; if( ![scanner isAtEnd]) [output appendString:@"_"]; // underscore } if([scanner scanCharactersFromSet:[NSCharacterSet uppercaseLetterCharacterSet] intoString:&temp]) [output appendString:[temp lowercaseString]]; } return output; --Graham On 13/09/2011, at 12:01 AM, Devraj Mukherjee wrote: > I am trying to use NSScanner to change camel cased strings into > underscore delimited strings, e.g featuredListingId to > featured_listing_id > > I have worked our how to use NSScanner to achieve this, consider my > implementation (implemented as a NSString category) > > - (NSString *) delimiterSeparatedWords > { > NSScanner *scanner = [NSScanner scannerWithString:self]; > > NSString *prefix = nil; > NSString *suffix = nil; > > [scanner scanCharactersFromSet:[NSCharacterSet > lowercaseLetterCharacterSet] intoString:&prefix]; > [scanner scanCharactersFromSet:[NSCharacterSet letterCharacterSet] > intoString:&suffix]; > > NSString *fieldNameString = [NSString stringWithFormat:@"%@_%@", > prefix, [suffix lowercaseString]]; > return fieldNameString; > } > > obviously it only addresses the first occurrence of a capital letter. > > Can I ask NSScanner to keep looking for multiple occurrences? _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com