Remove characters in NSCharacterSet from NSString

3 Solutions Collect From Internet About “Remove characters in NSCharacterSet from NSString”

If you’re not too worried about efficiency, a simple way would be [[myString componentsSeparatedByCharactersInSet:myCharacterSet] componentsJoinedByString:@""].

Otherwise, you could run through the characters in a loop, appending ones that weren’t in the set onto a new string. If you do it that way, remember to use an NSMutableString for your result as you’re building it up.

You can use an NSScanner to scan through the string, scanning a chunk of characters-not-in-the-set, appending it to your result string, scanning the characters-in-the-set into a variable you otherwise ignore, and repeating until the scanner reaches the end.

Checkout the following code:

@implementation NSString(Replacing)

- (NSString *)stringByReplacingCharactersInSet:(NSCharacterSet *)charSet withString:(NSString *)aString {
    NSMutableString *s = [NSMutableString stringWithCapacity:self.length];
    for (NSUInteger i = 0; i < self.length; ++i) {
        unichar c = [self characterAtIndex:i];
        if (![charSet characterIsMember:c]) {
            [s appendFormat:@"%C", c];
        } else {
            [s appendString:aString];
        }
    }
    return s;
}


@end

If you specify a replacement string of @”” you would remove the characters in the set.