Существует ли Objective-C (NSString), эквивалентный Java replaceAll("\\p{Cntrl}", "")?

Довольно простой вопрос:

Существует ли аналог Objective-C, который разработчики iOS могут использовать с объектами NSString для выполнения того же действия, что и Java replaceAll("\p{Cntrl}", "") для вызова String?

У нас уже есть это на Java:

String noControlCharsString = maybeHasControlCharsString.replaceAll("\\p{Cntrl}", "");

Я тоже хочу что-то подобное в Objective-C:

NSString *noControlCharsString = [maybeHasControlCharsString stringByReplacingControlCharsWithString:@""];

Заранее спасибо.

AG3

3 ответа

Попробуйте использовать это.. Это используется для замены персонажа.

  NSString *str = @"\\p{Cntrl}AB/bar:baz\\p{Cntrl}foo";
    NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"\\p{Cntrl}"];
    str = [[str componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
    NSLog(@"%@", str);

Другой способ Это используется для замены всей строки.

   NSString *str = @"\\p{Cntrl} This is a string \\p{Cntrl}";

    str = [str stringByReplacingOccurrencesOfString:@"\\p{Cntrl}"
                                             withString:@""];

        NSLog(@"%@", str);

stringByReplacingOccurrencesOfString метод NSString имеет NSRegularExpressionSearch опция, которая принимает тот же шаблон \p{Cntrl}, что и ваш метод Java:

NSString *maybeHasControlCharsString = @"\nabc\r\ndef\r";
NSString *noControlCharsString =
    [maybeHasControlCharsString stringByReplacingOccurrencesOfString:@"\\p{Cntrl}"
                                       withString:@""
                                          options:NSRegularExpressionSearch
                                            range:NSMakeRange(0, [maybeHasControlCharsString length])];
NSLog(@"%@", noControlCharsString);
// Output: abcdef

Пытаться:

NSString *noControlCharsString = [maybeHasControlCharsString stringByTrimmingCharactersInSet:controlCharacterSet];

РЕДАКТИРОВАТЬ Как справедливо говорит Мартин Р, вышеприведенное только удаляет любые лидирующие или конечные матчи

Вот метод категории, который удаляет все совпадения из строки:

- (NSString *)stringByStrippingCharactersInSet:(NSCharacterSet *)set {
    NSString *r = [self stringByTrimmingCharactersInSet:set];
    NSArray *components = [r componentsSeparatedByCharactersInSet:set];
    components = [components filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self <> ''"]];
    return [components componentsJoinedByString:@""];
}
Другие вопросы по тегам