Подтвердить что ты не робот

Удаление символов в NSCharacterSet из NSString

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

@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

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