Escaping all control characters in a NSString
Tue. January 3, 2012Categories: NSString, Objective-C, Python
Tags: control-characters, escape, nsstring, objective-c, python, repr
Here is a category that will mimic the functionality of the built-in python repr
function for strings:
- (NSString *)repr {
NSMutableString *myRepr = [[NSMutableString alloc] initWithString:self];
NSRange myRange = NSMakeRange(0, [self length]);
NSArray *toReplace = [NSArray arrayWithObjects:@"\0", @"\a", @"\b", @"\t", @"\n", @"\f", @"\r", @"\e", nil];
NSArray *replaceWith = [NSArray arrayWithObjects:@"\\0", @"\\a", @"\\b", @"\\t", @"\\n", @"\\f", @"\\r", @"\\e", nil];
for (int i = 0, count = [toReplace count]; i < count; ++i) {
[myRepr replaceOccurrencesOfString:[toReplace objectAtIndex:i] withString:[replaceWith objectAtIndex:i] options:0 range:myRange];
}
NSString *retStr = [NSString stringWithFormat:@"\"%@\"", myRepr];
[myRepr release];
return retStr;
}
Normally, this:
NSString *myString = @"SOME STRING WITH \n NEWLINES, \t TABS, ETC...\n\t..\n.....\n\tTAB";
NSLog("%@", myString);
would print:
SOME STRING WITH
NEWLINES, TABS, ETC...
..
.....
TAB
With repr
:
NSString *myString = @"SOME STRING WITH \n NEWLINES, \t TABS, ETC...\n\t..\n.....\n\tTAB";
NSLog("%@", [myString repr]);
You can see all of the literal characters:
"SOME STRING WITH \n NEWLINES, \t TABS, ETC...\n\t..\n.....\n\tTAB"
The array of control characters is taken from en.wikipedia.org/wiki/Control_character
Comments