Удалить символы в NSCharacterSet из NSString

У меня есть NSCharacterSet, который содержит все символы, которые я хочу удалить из моей строки NSString.

Как я могу это сделать?

3 ответа

Если вы не слишком беспокоитесь об эффективности, простой способ будет [[myString componentsSeparatedByCharactersInSet:myCharacterSet] componentsJoinedByString:@""],

В противном случае вы могли бы бегать по символам в цикле, добавляя символы, которых не было в наборе, к новой строке. Если вы делаете это таким образом, не забудьте использовать NSMutableString для вашего результата, как вы создаете его.

Оформить заказ следующий код:

@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

Если указать строку замены @"", вы удалите символы из набора.

Вы можете использовать NSScanner для сканирования строки, сканирования фрагмента символов, не входящих в набор, добавления его в строку результата, сканирования набора символов в переменную, которую вы иначе игнорируете, и повторения пока сканер не дойдет до конца.

Другие вопросы по тегам