Ironic... This question came up in a job interview I had a couple
weeks ago. The following NSString category will work to reverse a
string, and in my limited tests, it works with accents, mathematical
symbols, and Korean characters:
- (NSString *) stringByReversingSelf {
NSMutableString * r = [NSMutableString stringWithString:self];
NSUInteger len = [r length];
NSUInteger mid = floor(len/2);
for(int i = 0; i < mid; i++) {
NSRange fr = NSMakeRange(i,1);
NSRange lr = NSMakeRange(len-i-1,1);
NSString * f = [r substringWithRange:fr];
NSString * l = [r substringWithRange:lr];
[r replaceCharactersInRange:fr withString:l];
[r replaceCharactersInRange:lr withString:f];
}
return r;
}
Here's the output of my extremely limited tests: (attached as a .png
screenshot so that the encoding doesn't get messed up)
Cheers,
Dave
On Dec 31, 2008, at 8:51 AM, Michael Ash wrote:
On Wed, Dec 31, 2008 at 4:28 AM, Peter Hudson <peter.hud...@mac.com>
wrote:
I have been using the following for a while across a number of
languages
without problems.
NSString *s = @"Hello";
unsigned int length = [s length];
unsigned int index = length - 1;
NSMutableArray *ma = [NSMutableArray array];
while( index < UINT_MAX )
{
NSRange rng = NSMakeRange( index, 1 );
[ma addObject:[s substringWithRange:rng]];
--index;
}
NSString *reversed = [ma componentsJoinedByString:@""];
NSLog(@"reversed : %@",reversed);
I'm rather surprised, as this will fail on something as simple as an
accented e using a separate combining character, let alone more
complex constructs.
Mike
_______________________________________________
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