Удалить символы в NSCharacterSet из NSString - PullRequest
17 голосов
/ 13 августа 2010

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

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

Ответы [ 3 ]

37 голосов
/ 13 августа 2010

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

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

4 голосов
/ 18 июня 2015

Извлеките следующий код:

@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

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

3 голосов
/ 13 августа 2010

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

...