Skip to content

Instantly share code, notes, and snippets.

@fra3il

fra3il/0.m Secret

Last active February 3, 2016 01:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fra3il/7b82ee7d4c0f56178ab3 to your computer and use it in GitHub Desktop.
Save fra3il/7b82ee7d4c0f56178ab3 to your computer and use it in GitHub Desktop.
[WP/1049] NSCharacterSet vs. NSRegularExpressionSearch vs. NSScanner
// NSCharacterSet
NSCharacterSet *allowedCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"];
NSString *deviceNameString = [[[[UIDevice currentDevice] name] componentsSeparatedByCharactersInSet:[allowedCharacterSet invertedSet]] componentsJoinedByString:@""];
// NSRegularExpressionSearch
NSString *deviceNameString = [[UIDevice currentDevice] name];
NSString *regularExpressionString = @"([a-zA-Z0-9_-])+";
NSMutableString *resultString = [NSMutableString string];
NSInteger location = 0;
while (location < [deviceNameString length]) {
NSString *string = [deviceNameString substringFromIndex:location];
NSRange range = [string rangeOfString:regularExpressionString options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
[resultString appendString:[string substringWithRange:range]];
location += range.location + range.length;
} else {
break;
}
}
// NSScanner
NSString *deviceNameString = [[UIDevice currentDevice] name];
NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"];
charset = [charset invertedSet];
NSScanner *scanner = [NSScanner scannerWithString:deviceNameString];
NSString *tempString = nil;
NSString *resultString = [NSString string];
while(![scanner isAtEnd]) {
[scanner setCharactersToBeSkipped:charset];
[scanner charactersToBeSkipped];
[scanner scanUpToCharactersFromSet:charset intoString:&tempString];
if (tempString != nil) {
resultString = [resultString stringByAppendingString:tempString];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment