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

17

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

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

    
задан cschwarz 13.08.2010 в 14:07
источник

3 ответа

37

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

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

    
ответ дан David 13.08.2010 в 14:11
4

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

@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

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

    
ответ дан Werner Altewischer 18.06.2015 в 18:16
3

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

    
ответ дан Peter Hosey 13.08.2010 в 14:17