You can store each of the string characters in an NSArray objects, and then sort. It seems a bit expensive, so I could just use qsort() instead.
Here it is presented as an Objective-C category (untested):
NSString + SortExtension.h:
NSString + SortExtension.m:
#import "NSString+SortExtension.h" @implementation NSString (SortExtension) - (NSString *)sorted { // init NSUInteger length = [self length]; unichar *chars = (unichar *)malloc(sizeof(unichar) * length); // extract [self getCharacters:chars range:NSMakeRange(0, length)]; // sort (for western alphabets only) qsort_b(chars, length, sizeof(unichar), ^(const void *l, const void *r) { unichar left = *(unichar *)l; unichar right = *(unichar *)r; return (int)(left - right); }); // recreate NSString *sorted = [NSString stringWithCharacters:chars length:length]; // clean-up free(chars); return sorted; } @end
source share